Tomcat6.0中JNDI的配置以及常见问题(备用)
以下是基于Tomcat6.0的配置
1、在Tomcat根目录\l里的<Context>节点中添加以下配置
<Resource name="fileManager" auth="Container" type="javax.sql.DataSource" maxActive="100"
maxIdle="30" maxWait="10000" username="admin" password="123"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://localhost:1433;DatabaseName=FileManager" />
maxIdle="30" maxWait="10000" username="admin" password="123"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://localhost:1433;DatabaseName=FileManager" />
这里我们介绍一下<Resource>节点中的属性,
(1)、name:指定Resource的JNDI名字,可自定义;
(2)、auth:指定管理Resource的Manager,它有两个可选值:Container和Application。Container表示容器用来创建Resource,Application表示有Web应用来创建和管理Resource;
(3)、type:指定Resource所属的Java类名;
(4)、maxActive:指定数据连接池中处于活动状态的数据库连接的最大数目,取值为0,表示不受限制;
(5)、maxIdle:指定数据库连接池中处于空闲状态的数据库连接的最大数目,取值为0,表示不受限制;
(6)、maxWait :指定数据库连接池中数据库连接处于的空闲状态的最长时间(以毫秒为单位)java连接sqlserver数据库,超过一段时间将会抛出异常。取值为-1,表示可以无限制等待;
(7)、username:指定连接数据库的用户名;
(8)、password:指定连接数据库的口令;
(9)、driverClassName:指定连接数据库的JDBC驱动程序;
(10)、url:指定连接数据库的URL
2、在你的的l里面增加以下代码:
<resource-ref>
<description>JNDI Datasource example</description>
<res-ref-name>fileManager</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<description>JNDI Datasource example</description>
<res-ref-name>fileManager</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
同样的这里我们介绍一下<resource-ref>的属性
(1)、description:对所引用资源的说明(自定义);
(2)、res-ref-name:指定所引用资源的JNDI名字,与<Resource>元素的name属性对应;
(3)、res-type:指定所引用资源的类名字,与<Resource>元素中的type属性对应;
(4)、res-auth:指定管理所引用的资源的Manager,与<Resource>元素中的auth属性对应。
3、添加数据库驱动文件
通过数据源访问数据库,由于数据源由Tomcat创建并维护,所以必须把JDBC驱动程序复制到Tomcat的lib目录下。
4、获得数据源
这里我们建立一个类
import java.sql.Connection;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class DBHelper {
private static Connection getCon() {
private static Connection getCon() {
Connection con = null;
try {
Context context=new InitialContext();
DataSource ds=(DataSource)context.lookup("java:/comp/env/fileManager");
Connection();
} catch (Exception e) {
e.printStackTrace();
}
return con;
}
try {
Context context=new InitialContext();
DataSource ds=(DataSource)context.lookup("java:/comp/env/fileManager");
Connection();
} catch (Exception e) {
e.printStackTrace();
}
return con;
}
}
这样我们就可以获得数据库连接了。
值得注意的是上述代码中下划线行为通过Context获得数据源后取得Connection对象,红字体的代码为前缀,不可以更改,蓝字体的代码为创建的JNDI的名字。
这样JNDI的配置就完成了,下面我再列出几个常见的错误,我就遇到了两个错误。
1、错误一(如图):
错误提示:Cannot load JDBC driver class
错误原因及解决方法:前面我们讲过通过数据源访问数据库,数据源由Tomcat创建,所以应该吧JDBC驱动程序的JAR文件复制到Tomcat的lib目录下,一般来说这样操作,问题就应该解决了。
2、错误二(如图):
错误信息:Name jdbc is not bound in this Context(jdbc名称没有绑定到当前上下文)
一般来说此问题就是在使用lookup()方法查数据源时参数未写JNDI名称或者未写前缀,建议仔细检查一下。
3、错误三(如图):
错误信息:Cannot create JDBC driver of class '' for connect URL 'null' ----由于连接路径为NULL,不能创建驱动。
此问题一般是因为在l文件中指定的数据源名称与程序中所要访问的数据源名称不一致,建议仔细检查一下,很多问题都是由于粗心造成的。
好了,关于JNDI的配置以及常见问题就到这里了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论