第一种:
1在tomcat的conf文件夹下的context.xml配置文件</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"/>
2在项目的web.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测试方法:
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页面中可以直接调用,注意:要在容器内调用:
TestJNDI.testJNDI();
第二种:
1)在tomcat的server.xml的<host>标签内,添加:
<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 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,是局部的,推荐使用第三种方式.