在Tomcat5.0 环境下如何配置JNDI
关键词:
第一步:首先在tomcat$/conf文件夹(tomcat$指的是tomcat的安装目录,下皆同).中的server.xml中找到 <GlobalNamingResources> 它是JNDI的配
置部分。在里面添加
<!-- JNDI Demo -->
<!-- jdbc/Register中的Register是你虚拟目录的名字 这个很重要 否则的话会出现Name is not bound 这样的错误
-->
<Resource name="jdbc/Register" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/Register">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test_njupt</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>100</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>30</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>10000</value>
</parameter>
<!-- SQLServer dB username and password for dB connections -->
<parameter>
<name>username</name>
<value>sa</value>
</parameter>
<parameter>
<name>password</name>
<value>fxh1984</value>
</parameter>
</ResourceParams>
<!-- JNDI Demo -->
第二步:在这个server.xml文件下面还有<host></host>这部分,要在刚才的虚拟目录中添加
<ResourceLink name="jdbc/Register" global="jdbc/Register" type="javax.sql.DataSource"/>
我的虚拟目录部分是
<Context path="/Register" reloadable="true" docBase="C:/workspace/Register" workDir="C:/workspace/Register/work" >
<!-- JNDI Demo -->
<ResourceLink name="jdbc/Register" global="jdbc/Register" type="javax.sql.DataSource"/>
<!-- JNDI Demo -->
</Context>
上三步:在你的应用系统的目录 (我的是C:/workspace/Register/ ,上一步中出现的)中WEB-INF文件夹下的web.xml中添加如下的信息
<resource-ref>
<description>Demo</description>
<res-ref-name>jdbc/Register</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
第四步:就可以在系统中使用JNDI
Context initCtx=new InitialContext();
if(initCtx==null) throw new Exception("没有匹配的环境");
Context ctx=(Context)initCtx.lookup("java:/comp/env");
javax.sql.DataSource ds=(javax.sql.DataSource)ctx.lookup("jdbc/Register");
Connection conn=ds.getConnection();
out.println("connection is"+conn+"<br>");
在tmocat中出现
Cannot create JDBC driver of class '' for connect URL 'null'
是多方面的原因。我原来没有使用第三步。