java基础之oracle jndi数据源配置

     本文主要介绍JNDI简单配置,具体原理请自行谷歌,我一般使用tomcat作为服务器,下面介绍JNDI在Tomcat本地环境下的配置,文章比较简单,大神请绕道,写的不好的地方,请轻喷。本次使用的tomcat版本为Tomcat-7.0.34。

    (一)配置JDNI数据源。

    (1)首先找到tomcat的conf在本地的目录,我的是D:\tomcat7034\conf。

    (2)找到server.xml文件,在<GlobalNamingResources>下面新建一个Resource的子节点。

    

<Resource name="jdbc/db1" auth="Container"
		type="com.mchange.v2.c3p0.ComboPooledDataSource"
    factory="org.apache.naming.factory.BeanFactory"
    driverClass="oracle.jdbc.driver.OracleDriver"
		jdbcUrl="jdbc:oracle:thin:@127.0.0.1:1521:xe"
		user="admin"
		password="nicai"
		minPoolSize="10"
		maxPoolSize="200"
		maxIdleTime="1800"
		acquireIncrement="2"
		maxStatements="0"
		initialPoolSize="20"
		idleConnectionTestPeriod="60"
		acquireRetryAttempts="30"
		acquireRetryDelay="1000"
		testConnectionOnCheckin="false"
		breakAfterAcquireFailure="false"
		testConnectionOnCheckout="false"/>

    我使用的是c3p0连接池,其他连接池配置请自行谷歌。配置后GlobalNamingResources下面最少有2个Resource子元素,另外Resource是在GlobalNamingResources里面的,也就是说后面还有个</GlobalNamingResources>,这个了解XML的都知道。

    (3)由于本次使用c3p0连接池,所以要把相应jar包放到tomcat/lib目录下,首先找到tomcat下lib文件夹的位置,我的是D:\tomcat7034\lib,把c3p0和oracle driver放到lib下,我的是c3p0-0.9.5-pre6.jar,mchange-commons-java-0.2.6.3.jar,odbc6.jar,相关jar包请到官网下载。

   (二)如何使用JNDI数据源

    在项目的web.xml中添加

   

<resource-ref>
      <description>Datasource example</description>
      <res-ref-name>jdbc/db1</res-ref-name>
       <res-type>javax.sql.DataSource</res-type>
       <res-auth>Container</res-auth>
   </resource-ref>

    名字要和配置的一样。

    如果不想每次都添加,可以在tomcat的conf文件夹,我的是D:\tomcat7034\conf,找到context.xml,在<Context>下面添加一行

  

<ResourceLink name="jdbc/db1" global="jdbc/db1"  type="javax.sql.DataSource"/>

    即可。

    Java中应用JNDI,相应代码如下:

   

public static Connection getConn() {
		Connection conn = null;
		try {
			Context context = new InitialContext(); // 由tomcat、weblogic等发放Context
			Context ctx = (Context) context.lookup("java:comp/env"); 
			DataSource ds = (DataSource) ctx.lookup("jdbc/db1");
			conn = ds.getConnection();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return conn;
	}

    全文完。

   

 

 

你可能感兴趣的:(java)