jndi是sun公司提供的一种标准的java命名系统接口,jndi提供统一的客户端api,通过不同的访问提供者接口jndi spi的实现,由管理者将jndi api映射为特定的命名服务和目录系统,使得java应用程序可以和这些命名服务和目录服务之间进行交互。
我是在获取数据连接池资源时用到jndi的
环境tomcat6.0 j2ee
将需要的数据资源关联到项目web.xml中
<resource-ref> <description>MyDB Connection</description> <res-ref-name>jdbc/pooledDS</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>
我的资源文件放在项目的META-INF下(此目录本事也是项目为扩充资源准备的)
<?xml version="1.0" encoding="UTF-8"?> <Context reloadable="true" crossContext="true"> <WatchedResource>WEB-INF/web.xml</WatchedResource> <Resource name="jdbc/pooledDS" auth="Container" driverClass="oracle.jdbc.driver.OracleDriver" user="sa" password="sa" factory="org.apache.naming.factory.BeanFactory" type="com.mchange.v2.c3p0.ComboPooledDataSource" jdbcUrl="jdbc:oracle:thin:@192.168.8.15:1521:suszmp" /> </Context>
java调用的方法
String jndiName = "java:/comp/env/jdbc/pooledDS"; InitialContext ctx = new InitialContext(); DataSource ds = (DataSource) ctx.lookup(jndiName);
此处 java:/comp/env是jndi默认目录,资源文件的目录是/jdbc/pooledDS
扩充阅读:http://www.cnblogs.com/chinafine/archive/2010/06/16/1759246.html
http://www.cnblogs.com/chinafine/archive/2010/06/16/1759250.html