1.jndi 概念
http://baike.baidu.com/view/209575.htm
tomcat官方文档,tomcat启动后访问http://localhost:8080/docs/jndi-resources-howto.html
个人理解,基于目录服务技术的一中实现,可以对dns,ladp等服务提供支持。
2.结合tomcat配置,3种配置方式
1)全局配置,tomcat安装目录conf文件下的context.xml增加context节点下增加
<Resource name="jdbc/testDB" auth="Container" type="javax.sql.DataSource" driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@127.0.0.1:1521:orcl" username="test" password="test" maxActive="50" maxIdle="30" maxWait="10000" />
或者server.xml文件 GlobalNamingResources节点加入
<Resource
name="jdbc/testDB"
auth="Container"
type="javax.sql.DataSource"
password="test"
username="test"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@127.0.0.1:1521:orcl"
maxIdle="2"
maxWait="5000"
maxActive="4"
factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
/>
然后再context.xml文件加入ResourceLink
<ResourceLink name="jdbc/testDB" type="javax.sql.DataSource" global="jdbc/icacDb"/>
2)局部配置1,server.xml<host>标签内加入context节点
<Context path="/test_jndi" docBase="/test_jndi">
<Resource
name="jdbc/testDb"
auth="Container"
type="javax.sql.DataSource"
password="test"
username="test"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@127.0.0.1:1521:orcl"
maxIdle="2"
maxWait="5000"
maxActive="4"
factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
/>
3)局部配置2,部署应用web项目的META-INF下创建context.xml文件内容如下
<?xml version="1.0" encoding="UTF-8"?> <Context> <Resource name="jdbc/testDb" auth="Container" type="javax.sql.DataSource" password="test" username="test" driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@127.0.0.1:1521:orcl" maxIdle="2" maxWait="5000" maxActive="4" factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" /> </Context>
3.结合spring ioc datasource bean创建配置
<!-- spring 支持的两种配置方式--> <!-- 第一种 --> <!-- <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"> <value>java:comp/env/jdbc/testDb</value> </property> </bean>--> <!-- 第二种 --> <jee:jndi-lookup id="dataSource" jndiname="java:/comp/env/jdbc/testDb"/>
jndiName的value:comp前加/不加/都可以的。
4.服务启动完,http://localhost:8080/manager/resources可以查看发布的jndi服务。