Tomcat6.0 JNDI配置详解及问题解决

需积分: 9 2 下载量 79 浏览量 更新于2024-10-13 收藏 192KB DOC 举报
"Tomcat6.0中的JNDI配置和常见问题" 在Tomcat6.0中,Java Naming and Directory Interface (JNDI) 是一种服务,它允许应用程序查找和使用各种资源,如数据源(DataSource)、邮件会话等。JNDI通常用于在Java应用服务器中管理和查找这些资源。本文将详细介绍如何在Tomcat6.0中配置JNDI以及可能遇到的一些常见问题。 首先,我们需要在Tomcat的配置文件`context.xml`中添加一个`<Resource>`元素来定义JNDI资源。这个配置位于`$CATALINA_HOME/conf/context.xml`文件内的`<Context>`节点下。以下是一个示例配置: ```xml <Resourcename="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"/> ``` 这个配置的各个属性含义如下: 1. `name`:这是JNDI资源的名称,用于应用程序通过JNDI查找该资源。在这个例子中,名称是"fileManager",可以根据需求自定义。 2. `auth`:指定了管理资源的方式,可设置为"Container"或"Application"。"Container"表示由Tomcat容器创建并管理资源,"Application"则意味着由Web应用自己创建和管理。 3. `type`:定义了资源的Java类类型。在这个例子中,它是一个`javax.sql.DataSource`,表示配置的是一个数据源。 4. `maxActive`:设定数据源中最大活跃连接数。设置为0表示没有限制。 5. `maxIdle`:最大空闲连接数。0表示不限制。 6. `maxWait`:当所有连接都在使用时,新请求等待获取连接的最长时间(以毫秒计)。-1表示无限期等待。 7. `username`:连接数据库所需的用户名。 8. `password`:连接数据库的密码。 9. `driverClassName`:数据库的JDBC驱动类名。在这个例子中,使用的是Microsoft SQL Server的驱动。 10. `url`:数据库的连接URL,包括服务器地址、端口号和数据库名称。 配置完成后,还需要在Web应用的`WEB-INF/web.xml`文件中声明一个`<resource-ref>`元素,这样应用才能知道如何引用这个在JNDI中注册的资源: ```xml <resource-ref> <description>JNDI数据源示例</description> <res-ref-name>fileManager</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> ``` `<resource-ref>`的配置与`<Resource>`中的`name`和`type`相对应,`res-auth`同样应设置为"Container",表示由容器进行身份验证。 常见问题可能包括: 1. 配置错误:如果配置文件中的XML语法错误,Tomcat可能无法启动。检查每个属性的拼写和引号是否正确。 2. 权限问题:确保配置的用户名和密码能成功连接到数据库,否则应用将无法获取数据源。 3. 驱动兼容性:确保使用的JDBC驱动与数据库版本兼容,并已添加到Tomcat的类路径中。 4. 连接池问题:如果数据库连接池设置不当,可能会导致连接溢出或超时问题。适当调整`maxActive`、`maxIdle`和`maxWait`的值。 5. JNDI查找失败:应用可能因找不到JNDI资源而报错,检查`web.xml`中的`<resource-ref>`配置是否正确。 通过理解和解决这些问题,可以确保在Tomcat6.0中成功配置和使用JNDI资源。同时,了解这些配置对于优化应用性能和管理数据库连接至关重要。