代码中jndi数据源的支持

项目中基本都使用Spring框架,支持jndi还是很简单的,只需在spring配置文件中加入

		<!-- 使用jndi配置数据源 -->
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">  
        <property name="jndiName">  
            <value>java:comp/env/jndi数据源名称</value>  
        </property>  
    </bean>

 在本地开发中,一般使用tomcat,不会启动weblogic,所以,要配置context.xml以支持jndi

路径  /WebContent/META-INF/context.xml

内容基本如下

<?xml version="1.0" encoding="UTF-8"?>
<Context>
	<Resource
	 name="jndi数据源名称"
	 auth="Container"
	 type="javax.sql.DataSource"
	 username="xx"
	 password="xx"
	 url="jdbc:oracle:thin:@10.10.68.248:1521:orcl"
	 driverClassName="oracle.jdbc.driver.OracleDriver"
	 maxIdle="10"
	 maxWait="1000"
	 maxActive="20"
	/>
</Context>

 web.xml可以配置

  <!-- 
	  JNDI配置的资源引用:
	  • res-ref-name:表示引用资源的名称
	  • res-type:此资源对应的类型为javax.sql.DataSource
	  • res-auth:容器授权管理
	   -->
	   <!--Oracle数据库JNDI数据源引用 -->
	  <resource-ref>
	      <description>Oracle DB Connection</description>
	      <res-ref-name>jndi数据源名称</res-ref-name>
	      <res-type>javax.sql.DataSource</res-type>
	      <res-auth>Container</res-auth>
	 </resource-ref>

 项目中如果不使用spring框架,代码需要兼容驱动管理与jndi的连接的方式,以提高健壮性,部分伪代码

    public Connection getConnection()
        throws SQLException
    {
        if(isJndi)
            return getJndiConnection();
        else
            return getDriverConnection();
    }

   private void initJndiConnection()
        throws NamingException
    {
        Context ctx = new InitialContext();
        ds = (DataSource)ctx.lookup(config.getJndi());
    }

    public Connection getJndiConnection()
        throws SQLException
    {
            return ds.getConnection();
    }

private Connection getDriverConnection()
        throws SQLException
    {
                Connection conn = DriverManager.getConnection(config.getUrl(), config.getUserName(), getPassword(config));
        return conn;
    }

 

posted @ 2016-07-16 11:39  WhyToHow  阅读(306)  评论(0编辑  收藏  举报