`
lxy19791111
  • 浏览: 480918 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

轻量级JNDI数据源创建

    博客分类:
  • Java
阅读更多

      程序中手工创建JNDI数据源的代码如下:

java 代码
  1. //创建JNDI DataSource,原文见 http://dev2dev.bea.com.cn/bbsdoc/20060831320.html   
  2. private static void setDataSource() throws NamingException{   
  3.     if(ic==null){   
  4.         //Create initial context   
  5.         System.setProperty(Context.INITIAL_CONTEXT_FACTORY,"org.apache.naming.java.javaURLContextFactory");   
  6.         System.setProperty(Context.URL_PKG_PREFIXES,"org.apache.naming");   
  7.            
  8.         ic = new InitialContext();   
  9.   
  10.         // Construct BasicDataSource reference   
  11.         Reference ref = new Reference("javax.sql.DataSource","org.apache.commons.dbcp.BasicDataSourceFactory"null);   
  12.         ref.add(new StringRefAddr("driverClassName",SysParas.getPara("driverClassName")));   
  13.         ref.add(new StringRefAddr("url",SysParas.getPara("url")));   
  14.         ref.add(new StringRefAddr("username", SysParas.getPara("username")));   
  15.         ref.add(new StringRefAddr("password", SysParas.getPara("password")));   
  16.         ic.rebind(SysParas.getPara("jndiDs"), ref);   
  17.     }   
  18.   
  19. }   
  20.   
  21. //创建Connection   
  22. public static Connection testConnection() throws NamingException {   
  23.     setDataSource();   
  24.     Connection con = null;   
  25.     try {   
  26.         Context initCtx = new InitialContext();   
  27.         DataSource ds = (DataSource) initCtx.lookup(SysParas.getPara("jndiDs"));   
  28.         con = ds.getConnection();      
  29.     } catch (Exception e) {   
  30.         e.printStackTrace();   
  31.     }   
  32.     return con;   
  33. }  
xml 代码
  1. <?xml version="1.0" encoding="GBK"?>  
  2. <sys_para>  
  3.   <!-- 系统参数配置文件 -->  
  4.   <para>       
  5.     <item code="driverClassName"     value="com.microsoft.jdbc.sqlserver.SQLServerDriver"  description=""/>  
  6.     <item code="url"     value="jdbc:microsoft:sqlserver://192.168.2.18;databasename=ewebsafety;SelectMethod=cursor"  description=""/>  
  7.     <item code="username"    value="sa"  description=""/>  
  8.     <item code="password"    value="eweb"  description=""/>  
  9.     <item code="jndiDs"  value="safe"  description="数据源名称"/>  
  10.   </para>  
  11. </sys_para>  
java 代码
  1. /**  
  2.  * @author HuangYong  
  3.  * To change the template for this generated type comment go to  
  4.  * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments  
  5.  */  
  6. public class SysParas {   
  7.   
  8.        
  9.     private static HashMap prop;   
  10.     private static long lastLoadTime;   
  11.     private static long interval = 1000 * 100;   
  12.        
  13.        
  14.     /**  
  15.      * 读取配置文件参数  
  16.      * @param paras  
  17.      * @return  
  18.      * @throws Exception  
  19.      */  
  20.     public static synchronized String getPara( String paras )  throws IllegalArgumentException {   
  21.         if( paras == null || paras.trim().length()==0 ){   
  22.             thrownew IllegalArgumentException ( "Parameter's value invalid." ) );   
  23.         }   
  24.            
  25.         long currentTime = System.currentTimeMillis();   
  26.         if( (prop == null) || (currentTime-lastLoadTime)>interval ){   
  27.             reloadDom();   
  28.         }   
  29.            
  30.         Object obj = prop.get( paras );   
  31.         if( obj != null ){   
  32.             //System.out.println(paras + " = "+(String)obj);   
  33.             return( (String)obj );   
  34.         }    
  35.         returnnull );   
  36.            
  37.     }   
  38.        
  39.     private static synchronized void reloadDom() {   
  40.            
  41.         if( prop == null ){   
  42.             prop = new HashMap();   
  43.         }   
  44.                        
  45.         SAXBuilder builder = new SAXBuilder();   
  46.         Document read_doc = null;   
  47.         try {   
  48.             ClassLoader classLoader = Thread.currentThread().getContextClassLoader();   
  49.             InputStream in = classLoader.getResourceAsStream("sysConfig.xml");   
  50.             read_doc = builder.build(in);   
  51.         } catch (FileNotFoundException e) {   
  52.             e.printStackTrace();   
  53.         } catch (JDOMException e) {   
  54.             e.printStackTrace();   
  55.         } catch (IOException e) {   
  56.             e.printStackTrace();   
  57.         }   
  58.            
  59.         Element rootElement = read_doc.getRootElement();   
  60.         List list = rootElement.getChildren("para");   
  61.         for (Iterator i = list.iterator(); i.hasNext();) {   
  62.             Element current = (Element) i.next();   
  63.             List item = current.getChildren("item");   
  64.             for (Iterator j = item.iterator(); j.hasNext();) {   
  65.                 Element init = (Element) j.next();   
  66.                 Attribute code = init.getAttribute("code");                    
  67.                 Attribute value = init.getAttribute("value");   
  68.                 prop.put(code.getValue(),value.getValue());   
  69.             }              
  70.         }   
  71.         System.out.println("reading sysConfig.xml successfully...");   
  72.         lastLoadTime = System.currentTimeMillis();   
  73.            
  74.     }   
  75.        
  76.     public static void main(String [] args){   
  77.         System.out.println(SysParas.getPara("uploadSerialNo"));   
  78.     }   
  79.        
  80. }  
分享到:
评论

相关推荐

    用dbcp连接池,mysql数据库,在tomcat服务器下,通过hibernate配置jndi数据源.doc

    4. **Hibernate**:Hibernate是一个开放源码的对象关系映射框架,它对JDBC进行了轻量级的对象封装,使Java开发者可以使用面向对象的方式来操作数据库。 5. **JNDI数据源**:JNDI(Java Naming and Directory ...

    J2EE基础:JNDI定义Oracle数据源的方法

    在Tomcat这样的轻量级应用服务器中,JNDI数据源的配置可能因版本不同而有所差异。 二、数据连接池配置 1. **安装**:Apache Commons DBCP(Database Connection Pool)是常用的数据库连接池实现,依赖于Commons ...

    Tomcat jndi 配置数据源过程

    在Java应用服务器中,Tomcat是一个广泛使用的轻量级服务器,它支持JNDI(Java Naming and Directory Interface)来管理数据源,使得应用程序能够透明地访问数据库资源。JNDI配置数据源是将数据库连接池集成到Tomcat...

    轻量级的java数据源jdbc框架

    本文将深入探讨一个轻量级的 Java 数据源框架,该框架基于 C3P0 数据源并采用纯 Java 实现,适用于多种数据库,如 MySQL、Oracle 和 SQL Server。 首先,让我们来了解 C3P0 数据源。C3P0 是一个开源的 JDBC 连接池...

    几种常用的Java数据源解决方案

    本文将详细介绍几种常用的数据源解决方案及其配置方法,包括JNDI方式创建`DataSource`、Apache提供的简单连接池创建数据源、C3P0方式创建数据源、Proxool方式创建数据源以及BoneCP方式创建数据源。 #### JNDI 方式...

    mysql数据源设置

    1. **BasicDataSource**:这是Apache Commons DBCP库提供的一个简单数据源实现,适用于轻量级应用。配置时,你需要指定数据库驱动、URL、用户名、密码等基本信息。 2. **C3P0**:C3P0是一个开源的JDBC连接池,它...

    spring+druid+AtomikosDataSource实现多数据源切换及分布式事务控制

    Spring框架因其强大的依赖注入和AOP(面向切面编程)特性,成为Java领域首选的轻量级框架。Druid是一个优秀的数据库连接池组件,而AtomikosDataSource则是处理分布式事务的重要工具。下面我们将详细探讨如何利用...

    jndi连接池帮助文档

    常见的JNDI服务器包括轻量级目录访问协议(LDAP)、Tomcat的数据源、EJB容器中的Bean对象、文件系统、注册表等。JNDI服务器的作用在于集中管理资源,方便多个应用程序共享和访问。 2. **为什么要使用JNDI**: 主要...

    轻量级Java EE企业应用实战第4版第4章01源代码.rar

    在本资源中,"轻量级Java EE企业应用实战第4版第4章01源代码.rar" 提供了关于Java EE开发的实践案例。这个压缩包是该书的一个章节内容,由于文件大小限制,被分成了多个部分。在这个部分,我们主要关注的是4.1子目录...

    ibatis+jndi+mysql

    Ibatis 是一个轻量级的持久化框架,它允许开发者将数据库操作与业务逻辑分离,通过映射 SQL 语句到简单的 Java 对象(POJOs)来处理数据。Ibatis 不是 ORM 框架,而是提供了一个 SQL 编写环境,将 SQL 的控制权交给...

    Spring多数据源分布式事务管理

    MyBatis是轻量级的持久层框架,与Spring整合后,可以通过SqlSessionFactoryBean和SqlSessionTemplate来处理多数据源的切换。在MyBatis中,我们可以为每个数据源创建一个单独的MapperFactoryBean,并配置对应的...

    TomCat数据源配置

    在IT行业中,Tomcat是一款广泛使用的轻量级应用服务器,特别是在Java Web开发中。本篇文章将详细介绍如何在Tomcat 5.5版本中配置数据源,以及如何在JSP程序中使用这个配置好的数据源。 首先,我们来看一下Tomcat ...

    JNDI (1)

    JNDI并不是一个具体的目录服务实现,而是一个服务提供商接口(SPI),它允许开发者集成各种命名和目录服务,如LDAP(轻量级目录访问协议)、DNS、RMI注册表等。 在Java应用中,JNDI主要应用于以下场景: 1. **数据...

    Spring 数据源的灵活配置巧应用

    Spring框架以其轻量级、灵活性及强大的功能,深受开发者们的喜爱。其中,Spring对于数据访问的支持更是其一大亮点。本文将详细介绍如何在Spring中进行数据源的灵活配置,以及如何利用这些配置实现高效的数据访问。 ...

    tomcat-jndi

    在Java应用服务器中,Tomcat是一个广泛使用的轻量级服务器,而JNDI(Java Naming and Directory Interface)则是Java平台中的一个核心API,用于提供命名和目录服务。本篇文章将深入探讨Tomcat与JNDI的结合使用,帮助...

    轻量级Java EE企业应用实战第4版第8章02源代码

    通过这些知识点的学习,读者将能够构建出一个完整的轻量级Java EE应用,包括前端视图、后端逻辑和数据管理。每个压缩包都是整个应用的一部分,合在一起构成一个完整的案例,有助于读者深入理解和实践Java EE开发。

    数据源连接池的-例子

    总结来说,本示例涵盖了两种不同的数据源连接池实现方式:c3p0,一种轻量级的连接池实现,以及JNDI结合jtds,适用于更大型的应用服务器环境。理解并正确使用这些技术,能帮助开发者优化数据库操作,提升应用性能,...

    tomcat下配置jdbc数据源

    2. **Tomcat**:Apache Tomcat是一个免费的开源的Servlet容器,由于其轻量级结构,常常被用来作为简单的Web服务器。 3. **数据源(DataSource)**:数据源是JDBC API的一个重要组成部分,它负责创建并管理对数据库的...

    JNDI使用

    JNDI的出现使得应用可以与各种不同的命名和目录服务进行交互,如LDAP(轻量级目录访问协议)、DNS(域名系统)或者简单的文件系统。 ### 1. JNDI的基本概念 - **Naming Service**:命名服务,它允许将名字映射到...

Global site tag (gtag.js) - Google Analytics