JNDI使用小指南
1、配置Tomcat5.5.X的Server.xml,在<host>下面加上
<Context path="/JNDIDemo" docBase="D:\workspace\JNDIDemo\WebRoot" debug="0" reloadable="true" crossContext="true"> <Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_quality_log." suffix=".txt" timestamp="true"/> <Resource name="jdbc/test" <!-- JNDI数据池名称 --> type="javax.sql.DataSource" <!-- 数据类 --> password="karid" <!-- 密码 --> driverClassName="oracle.jdbc.driver.OracleDriver" <!-- 驱动 --> maxIdle="2" <!-- 最少可用lia --> maxWait="5000" <!-- 最大等待时间 5秒 --> username="karid" <!-- 用户名 --> url="jdbc:oracle:thin:@127.0.0.1:1521:karid" maxActive="4" <!-- 最大可用连接 --> /> <ResourceParams name="jdbc/test"> <parameter> <name>removeAbandoned</name> <!-- Abandoned DB connections are removed and recycled --> <value>true</value> </parameter> <parameter> <name>removeAbandonedTimeout</name> <!-- Use the removeAbandonedTimeout parameter to set the number of seconds a DB connection has been idle before it is considered abandoned. --> <value>60</value> </parameter> <parameter> <name>logAbandoned</name> <!-- Log a stack trace of the code which abandoned --> <value>false</value> </parameter> <parameter> <name>factory</name> <!--DBCP Basic Datasource Factory --> <value>org.apache.commons.dbcp.BasicDataSourceFactory</value> </parameter> </ResourceParams>
2、配置web.xml
<description>MySQL Test App</description> <resource-ref> <description>DB Connection</description> <res-ref-name>jdbc/test</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>
3、JNDI使用
public class DataSourceFactory { private static DataSource ds; public static DataSource createDataSourde() { if (ds == null) { try { Context initContext = new InitialContext(); if (initContext == null) System.out.println("无配置环境"); Context envContext = (Context) initContext.lookup("java:/compenv"); ds = (DataSource) envContext.lookup("jdbc/test"); //根据名称取得数据源 } catch (NamingException e) { e.printStackTrace(); } } return ds; } } 1 楼 tangdaibing 2008-06-19 写个数据源要这么多的配置代码,太浪费了2 楼 eye_accpjiang 2008-06-30 JMS如何在JNDI中配置消息队列目的啊? 3 楼 haibo120 2008-07-13 配置连接池的话用DBCP会不会更方便 4 楼 karidyang 2008-07-18 现在一般的公司服务器都是配置好了JNDI,然后给你JNDI名称,你无需知道数据库用户名和密码(也有可能不想告诉你)。 5 楼 karidyang 2008-07-18 通过管理界面当然可以生成,但是哪一天你接触不到管理界面怎么办?写文件的方式还是有必要知道的吧。 6 楼 helloJ 2008-07-19 学习了 7 楼 tsliyangyang 2008-09-25 同意,还是知道怎么回事比较好。 8 楼 tsliyangyang 2008-09-25 karidyang 写道通过管理界面当然可以生成,但是哪一天你接触不到管理界面怎么办?写文件的方式还是有必要知道的吧。
恩,同意,还是知道怎么回事比较好。 9 楼 幽梦新影 2008-09-25 看得不太明,有待提高~~ 10 楼 qinjingkai 2009-03-18 最好是 自己写文件,把来龙去脉弄清楚;一个是效率的问题,手写比有UI快多了;
而是如果长期用 UI的话,会有依赖的阴影;