tomcat配置jndi的三种方法
jnditomcat配置jnditomcat配置数据源
大致的有以下三种配置方式:
第一种:
1在tomcat的conf文件夹下的context.xml配置文件</Context>中加入:
Xml代码 收藏代码
<Resource name="jndi/demo"
auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@127.0.0.1:1521:ORCL"
username="scott"
password="tiger"
maxActive="20"
maxIdle="10"
maxWait="10000"/>
2在项目的web.xml中加入资源引用:
Xml代码 收藏代码
<resource-ref>
<description>JNDI DataSource</description>
<res-ref-name>jndi/demo</res-ref-name>
<res-ref-type>javax.sql.DataSource</res-ref-type>
<res-auth>Container</res-auth>
</resource-ref>
其中res-ref-name值要和context.xml的name值一致。
3)jndi测试方法:
Java代码 收藏代码
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
public class TestJNDI{
public void testJNDI() throws NamingException, SQLException{
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jndi/demo");
Connection conn = ds.getConnection();
Statement statement = conn.createStatement();
ResultSet rs = statement.executeQuery("select * from emp");
while(rs.next()){
System.out.println(rs.getString(1)+","+rs.getString(2));
}
}
}
4)在serlvet或者jsp页面中可以直接调用,注意:要在容器内调用:
Java代码 收藏代码
TestJNDI.testJNDI();
第二种:
1)在tomcat的server.xml的<host>标签内,添加:
Xml代码 收藏代码
<Context path="/demoJndi" docBase="/demoJndi">
<Resource name="jndi/demo"
auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@127.0.0.1:1521:ORCL"
username="scott"
password="tiger"
maxActive="20"
maxIdle="10"
maxWait="10000"/>
</Context>
其他配置同第一种方式。
第三种:局部配置。
1)在项目的META-INFO下面新建context.xml。加入:
Xml代码 收藏代码
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource name="jndi/demo"
auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@127.0.0.1:1521:ORCL"
username="scott"
password="tiger"
maxActive="20"
maxIdle="10"
maxWait="10000"/>
</Context>
其他配置同第一种方式。
总结:
第一种方式依赖tomat,是全局的,而且可以配置多个。
二三两种不依赖tomcat,是局部的,推荐使用第三种方式.