如何在Tomcat中使用jndi
2008-06-04 16:19
176 查看
配置环境:jdk-6u1-windows-i586-p.exe+jakarta-tomcat-5.0.28.exe+SqlServer2000sp3
方式一
一:启动Tomcat,打开IE在地址栏内输入http://localhost:8080/admin 进入Tomcat的管理界面;
点击右边的Data Sources 在右上角的下拉菜单中选择Create New Data Source 在下边的输入框中输入需要的配置信息。
输入后单击保存按钮,再点击commit change提交。
所填内容的说明如下
JNDI Name:jdbc/mydb(mydb为自己所命的名字)
Data Source URL:jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=databasebname(连接的数据名)
JDBC Driver Class: com.microsoft.jdbc.sqlserver.SQLServerDriver
User Name:连接数据库的用户名 Password: 数据库密码
Max. Active Connections: 最大连接数
Max. Idle Connections: 是最大的空闲连接数
Max. Wait for Connection: 最大等待连接数
validationQuery:用来查询池中空闲的连接。
提交后会发现conf/server.xml的内容发生了改变,经过对比发现以上的操作实际上修改了<GlobalNamingResources>标签中的<Resource>标签,即添加了资源描述,同时还把原有的注释全部删除。
二.创建新的WEB应用程序,我们假设应用程序存放的物理路径为d:/jndi,同时建立其子目录d:/jndi/WEB-INF 在%TOMCAT_HOME%/conf/Catalina/localhost中建立虚拟目录描述文件jndi.xml ,内容如下:
<Context displayName="jndi" docBase="D:/jndi" path="/jndi" workDir="work/Catalina/localhost/jndi">
<ResourceLink global="jdbc/mydb" name="jdbc/mydb" type="javax.sql.DataSource"/>
</Context>
此步操作的目的是建立虚拟站点/jnd并使得jndi应用程序能够引用所配置的JNDI数据源,如果不加会出现错误Cannot create JDBC driver of class '''' for connect URL ''null'' ="楷体_GB2312" size="3">
三、在d:/jndi/WEB-INF中建立web.xml文件,为应用程序指定JNDI数据源,内容如下:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/mydb</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
四.测试,先在数据库中建一个有2列元素,名称为jndi的表,之后采用如下JSP页面测试命名为test.jsp,浏览器中输入网址http://127.0.0.1:8080/jndi/test.jsp
<%@ page import="java.io.*,java.util.*,java.sql.*,javax.sql.*,javax.naming.*"%>
<%@ page contentType="text/html;charset=GB2312"%>
<html>
<head><title>DataSourse Connection Test</title></head>
<body>
<%try{
java.sql.Connection con;& nbsp; Statement stmt; ResultSet rs;
Context ctx = new InitialContext(); DataSource ds=(DataSource)ctx.lookup("java:/comp/env/jdbc/mydb");
con=ds.getConnection(); stmt=con.createStatement(); rs=stmt.executeQuery("select * from jndi");
while(rs.next()){ out.print(rs.getString(1)); out.print(rs.getString(2));} rs.close(); stmt.close(); con.close(); }catch(Exception e){ out.print(e.getMessage());} %>
</body>
</html>
方式二
一 把方式一步骤1里产生的代码放入tomcat安装目录下/conf/catalina/localhost/项目名.xml中(依前面的约定此名为jndi.xml) 产生代码如下: <Resource auth="Container" description="User database that can be updated and saved" name="UserDatabase" type="org.apache.catalina.UserDatabase"/> <Resource name="jdbc/mysql" type="javax.sql.DataSource"/> <ResourceParams name="UserDatabase"> <parameter> <name>factory</name> <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value> </parameter> <parameter> <name>pathname</name> <value>conf/tomcat-users.xml</value> </parameter> </ResourceParams> <ResourceParams name="jdbc/mysql"> <parameter> <name>url</name> <value>jdbc:mysql://localhost/test</value> </parameter> <parameter> <nam e>password</name> <value></value> </parameter> <parameter> <name>maxActive</name> <value>4</value> </parameter> <parameter> <name>maxWait</name> <value>5000</value> </parameter> <parameter> <name>driverClassName</name> <value>org.gjt.mm.mysql.Driver</value> </parameter> <parameter> <name>username</name> <value>root</value> </parameter> <parameter> <name>maxIdle</name> <value>2</value> </parameter> </ResourceParams>
二 同方式一的第三步两者的区别是作用域不同 具体说来方式一建立了一个全局的数据源,以供WEB应用程序使用。方式一的第一步声明了全局数据源,第二步则说明jndi应和程序要引用一个名为jdbc/mydb的数据源。在方式二中,由一步完成了上述两步,但方式二所建的这个数据源也就仅能供当前所在的应用程序来使用。
三 测试 同方式一第四步 注意: 1.org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory ([Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.)此是一个小问题,因为我的SQLSERVER2K的服务改成手动的,所以每次启动后就要手动的启动SQLSERVER2K,由于一下子不记的启动了,所以报些错误,所以如果你经常要用到SQLSERVER2K的话,最好不要将其改为手动启动 2.sqlserver2k sp3以下版本1433端号是没有打开的,必须进行升级,否则会出现Cannot create PoolableConnectionFactory ([Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.)
方式一
一:启动Tomcat,打开IE在地址栏内输入http://localhost:8080/admin 进入Tomcat的管理界面;
点击右边的Data Sources 在右上角的下拉菜单中选择Create New Data Source 在下边的输入框中输入需要的配置信息。
输入后单击保存按钮,再点击commit change提交。
所填内容的说明如下
JNDI Name:jdbc/mydb(mydb为自己所命的名字)
Data Source URL:jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=databasebname(连接的数据名)
JDBC Driver Class: com.microsoft.jdbc.sqlserver.SQLServerDriver
User Name:连接数据库的用户名 Password: 数据库密码
Max. Active Connections: 最大连接数
Max. Idle Connections: 是最大的空闲连接数
Max. Wait for Connection: 最大等待连接数
validationQuery:用来查询池中空闲的连接。
提交后会发现conf/server.xml的内容发生了改变,经过对比发现以上的操作实际上修改了<GlobalNamingResources>标签中的<Resource>标签,即添加了资源描述,同时还把原有的注释全部删除。
二.创建新的WEB应用程序,我们假设应用程序存放的物理路径为d:/jndi,同时建立其子目录d:/jndi/WEB-INF 在%TOMCAT_HOME%/conf/Catalina/localhost中建立虚拟目录描述文件jndi.xml ,内容如下:
<Context displayName="jndi" docBase="D:/jndi" path="/jndi" workDir="work/Catalina/localhost/jndi">
<ResourceLink global="jdbc/mydb" name="jdbc/mydb" type="javax.sql.DataSource"/>
</Context>
此步操作的目的是建立虚拟站点/jnd并使得jndi应用程序能够引用所配置的JNDI数据源,如果不加会出现错误Cannot create JDBC driver of class '''' for connect URL ''null'' ="楷体_GB2312" size="3">
三、在d:/jndi/WEB-INF中建立web.xml文件,为应用程序指定JNDI数据源,内容如下:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/mydb</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
四.测试,先在数据库中建一个有2列元素,名称为jndi的表,之后采用如下JSP页面测试命名为test.jsp,浏览器中输入网址http://127.0.0.1:8080/jndi/test.jsp
<%@ page import="java.io.*,java.util.*,java.sql.*,javax.sql.*,javax.naming.*"%>
<%@ page contentType="text/html;charset=GB2312"%>
<html>
<head><title>DataSourse Connection Test</title></head>
<body>
<%try{
java.sql.Connection con;& nbsp; Statement stmt; ResultSet rs;
Context ctx = new InitialContext(); DataSource ds=(DataSource)ctx.lookup("java:/comp/env/jdbc/mydb");
con=ds.getConnection(); stmt=con.createStatement(); rs=stmt.executeQuery("select * from jndi");
while(rs.next()){ out.print(rs.getString(1)); out.print(rs.getString(2));} rs.close(); stmt.close(); con.close(); }catch(Exception e){ out.print(e.getMessage());} %>
</body>
</html>
方式二
一 把方式一步骤1里产生的代码放入tomcat安装目录下/conf/catalina/localhost/项目名.xml中(依前面的约定此名为jndi.xml) 产生代码如下: <Resource auth="Container" description="User database that can be updated and saved" name="UserDatabase" type="org.apache.catalina.UserDatabase"/> <Resource name="jdbc/mysql" type="javax.sql.DataSource"/> <ResourceParams name="UserDatabase"> <parameter> <name>factory</name> <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value> </parameter> <parameter> <name>pathname</name> <value>conf/tomcat-users.xml</value> </parameter> </ResourceParams> <ResourceParams name="jdbc/mysql"> <parameter> <name>url</name> <value>jdbc:mysql://localhost/test</value> </parameter> <parameter> <nam e>password</name> <value></value> </parameter> <parameter> <name>maxActive</name> <value>4</value> </parameter> <parameter> <name>maxWait</name> <value>5000</value> </parameter> <parameter> <name>driverClassName</name> <value>org.gjt.mm.mysql.Driver</value> </parameter> <parameter> <name>username</name> <value>root</value> </parameter> <parameter> <name>maxIdle</name> <value>2</value> </parameter> </ResourceParams>
二 同方式一的第三步两者的区别是作用域不同 具体说来方式一建立了一个全局的数据源,以供WEB应用程序使用。方式一的第一步声明了全局数据源,第二步则说明jndi应和程序要引用一个名为jdbc/mydb的数据源。在方式二中,由一步完成了上述两步,但方式二所建的这个数据源也就仅能供当前所在的应用程序来使用。
三 测试 同方式一第四步 注意: 1.org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory ([Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.)此是一个小问题,因为我的SQLSERVER2K的服务改成手动的,所以每次启动后就要手动的启动SQLSERVER2K,由于一下子不记的启动了,所以报些错误,所以如果你经常要用到SQLSERVER2K的话,最好不要将其改为手动启动 2.sqlserver2k sp3以下版本1433端号是没有打开的,必须进行升级,否则会出现Cannot create PoolableConnectionFactory ([Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.)
相关文章推荐
- tomcat中通过JNDI数据源配置使用
- Tomcat使用JNDI连接MYSQL数据库
- Tomcat6.0的JNDI使用方法(连接池)
- TOMCAT/MySQL JNDI使用配置说明
- spring mvc项目,部署tomcat 中,使用jndi数据源
- tomcat配置jndi+spring使用jndi数据源
- 如何配置和使用Tomcat访问日志
- websphere服务器,如何使用jndi数据源
- 如何使用yum命令安装 tomcat ?
- JNDI:如何在TOMCAT中配置数据源通过JNDI访问测试操作步骤
- 如何让tomcat bundle liferay使用不同的数据库
- JNDI:如何在TOMCAT中配置数据源通过JNDI访问测试操作步骤
- 如何配置tomcat使用特定的jdk版本
- cobertura 和tomcat如何集成使用
- Tomcat中配置和使用JNDI
- JNDI学习总结(三)——Tomcat下使用Druid配置JNDI数据源
- JNDI学习总结(二)——Tomcat下使用C3P0配置JNDI数据源
- 如何使用tomcat建立简单的java web项目
- Tomcat配置JNDI数据源的方式及使用
- 如何使用War包部署Tomcat