本文主要介绍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;
}
全文完。