软件:
(1)tomcat5.0
http://apache.linuxforum.net/dist/j...mcat-5.0.25.exe
(2)jtds.jar
http://jtds.sourceforge.net/
(3)jdk1.4
(4)Sqlserver2000(windows2003系统需要sp3补丁)
设置环境变量:
(1)CATALINA_HOME
tomcat的安装路径,如:E:/Tomcat5.0
(2)CATALINA_BASE
tomcat的安装路径,如:E:/Tomcat5.0
(3)JAVA_HOME
jdk安装路径,如:E:/Program Files/j2sdk1.4.2
(4)PATH
%JAVA_HOME%/bin
(5)class_path
.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar;%CATALINA_HOME%/common/lib/servlet-api.jar(前面的.和;不能少)
将jtds.jar放在正确的目录
只能放在%CATALINA_HOME%/common/lib/目录下
修改server.xml文件
改文件位于:;%CATALINA_HOME%/conf/server.xml
在<host>与</host> 之间,修改后的内容为:
<Context path="/tiannet" docBase= "E:/tiannet"
debug="5" reloadable="true" crossContext="true" >
<Logger className= "org.apache.catalina.logger.FileLogger"
directory="logs" prefix="localhost_log." suffix= ".txt"
timestamp="true" />
<Resource name= "jdbc/connectDB"
auth= "Container"
type="javax.sql.DataSource" />
<ResourceParams name="jdbc/connectDB" >
<parameter >
<name>factory</name >
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value >
</parameter >
<parameter >
<name>removeAbandoned</name >
<value>true</value >
</parameter >
<parameter >
<name>removeAbandonedTimeout</name >
<value>60</value >
</parameter >
<parameter >
<name>logAbandoned</name >
<value>false</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 >
<parameter >
<name>username</name >
<value>sa</value >
</parameter >
<parameter >
<name>password</name >
<value>123</value >
</parameter >
<parameter >
<name>driverClassName</name >
<value>net.sourceforge.jtds.jdbc.Driver</value >
</parameter >
<parameter >
<name>url</name >
<value>jdbc:jtds:sqlserver: //127.0.0.1:1433/tiannet;charset=gb2312</value>
</parameter >
</ResourceParams >
</Context>
参数说明
1) path 指定路径,也就是访问web的路径,这里为http://localhost:8080/tiannet
2) docBase 虚拟目录的路径,绝对路径。如果虚拟目录设置%CATALINA_HOME%/webapps目录的某个子目录下(如tiannet),则可直接写子目录名称(如tiannet)。
3) reloader 当网页被更新时是否重新编译。
4) maxActive 连接池的最大数据库连接数。设为0表示无限制。
5) maxIdle 数据库连接的最大空闲时间。超过此空闲时间,数据库连接将被标记为不可用,然后被释放。设为0表示无限制。
6) maxWait 最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。
7) removeAbandoned 回收被遗弃的(一般是忘了释放的)数据库连接到连接池中。
8) removeAbandonedTimeout 数据库连接过多长时间不用将被视为被遗弃而收回连接池中。
9) logAbandoned 将被遗弃的数据库连接的回收记入日志。
10) driverClassName JDBC驱动程序。
11)username : 连接数据库的用户名
12)password : 连接数据库的密码
13) url 格式化数据库连接字符串(这里的tiannet为数据库名),格式为:
jdbc:jtds:<server_type>://<server>[:<port>][/<database>][;<property>=<value>[;...]]
更多url的说明请参照:
http://jtds.sourceforge.net/faq.html
将上面的内容修改保存,并重新启动tomcat后,在%CATALINA_HOME%/conf/Catalina/localhost/目录下会多出一个xml文件,这里为:tiannet.xml。现在虚拟目录就生效了。
修改/WEB-INF/web.xml文件
在虚拟目录的根目录(这里为:E:/tiannet)下建立WEB-INF目录,在WEB-INF目录下新建一个web.xml文件,基本内容为:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app>
<display-name>tiannet web</display-name>
<description>connectDB test</description>
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/connectDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
注意<res-ref-name>jdbc/connectDB</res-ref-name>的jdbc/connectDB和server.xml文件中的Resource的name属性以及ResourceParams的name属性值是一样的。
测试连接池的代码
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<html>
<body>
<%
DataSource ds = null;
Connection conn = null;
ResultSet rs = null;
Statement stmt = null;
InitialContext ctx = null;
String m_strDriver = "net.sourceforge.jtds.jdbc.Driver", // 驱动字符串
m_strConURL = "jdbc:jtds:sqlserver"; // 连接字符串
try
{
ctx=new InitialContext();
ds=(DataSource)ctx.lookup("java:comp/env/jdbc/connectDB"); //注意connectDB的名称和上面一致
conn = ds.getConnection();
stmt = conn.createStatement();
String strSql = " select * from test"; //test为数据库中的一个表
rs = stmt.executeQuery(strSql);
while(rs.next())
{
out.println(rs.getString(1) + "");
out.println(rs.getString(2) + "");
}
}
catch(Exception ex)
{
out.println(ex.getMessage());
}
finally
{
rs.close();
stmt.close();
conn.close();
ctx.close();
}
%>
</body>
</html>
到这里所有的配置就结束了。
由于首次使用tomcat和jtds,所以花了比较多的时间。
其间遇到一个错误:
Can't open a socket on localhost:1433. Check host and port number and make sure the security
manager allows this connection. You can also try running the SocketApplet
(java.net.ConnectException: Connection refused: connect).
这个错误是因为windows2003server系统没有打上sp3的补丁,奇怪的是.net连接sqlserver2000不需要打补丁。
也可能会遇到这样的错误:
No suitable driver
这多半是连接字符串的格式不正确造成的。
最让我头疼的错误还是:
Cannot create JDBC driver of class '' for connect URL 'null'
我出现这个错误的原因是因为:在server.xml中设置docBase的值,也就是虚拟目录的名称(测试时用的DBTest),其大小写与建的虚拟目录名称大小写不一致(当时为DBtest)。
配置好这些东西后,登陆进tomcat的管理页面,点击commit changes按钮,你会发现server.xml文件发生了改变,那些修改的内容已经全部没了。而这些内容已经全部被移到%CATALINA_HOME%/conf/Catalina/localhost/下相应的xml文件中了(这里为tiannet.xml)。
其实在admin的界面也可以建立虚拟目录、配置连接池等。不需要手动修改server.xml 文件,配置好一切东西后,其连接池的配置信息会自动放置在%CATALINA_HOME%/conf/Catalina/localhost/的xml文件中。
但是我在这样做后,测试时遇到一个异常:
Name java:comp is not bound in this Context
到现在依然没有找到解决办法。
PS:
如果xml里有中文,则需将encoding设置为gb2312
(1)tomcat5.0
http://apache.linuxforum.net/dist/j...mcat-5.0.25.exe
(2)jtds.jar
http://jtds.sourceforge.net/
(3)jdk1.4
(4)Sqlserver2000(windows2003系统需要sp3补丁)
设置环境变量:
(1)CATALINA_HOME
tomcat的安装路径,如:E:/Tomcat5.0
(2)CATALINA_BASE
tomcat的安装路径,如:E:/Tomcat5.0
(3)JAVA_HOME
jdk安装路径,如:E:/Program Files/j2sdk1.4.2
(4)PATH
%JAVA_HOME%/bin
(5)class_path
.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar;%CATALINA_HOME%/common/lib/servlet-api.jar(前面的.和;不能少)
将jtds.jar放在正确的目录
只能放在%CATALINA_HOME%/common/lib/目录下
修改server.xml文件
改文件位于:;%CATALINA_HOME%/conf/server.xml
在<host>与</host> 之间,修改后的内容为:
<Context path="/tiannet" docBase= "E:/tiannet"
debug="5" reloadable="true" crossContext="true" >
<Logger className= "org.apache.catalina.logger.FileLogger"
directory="logs" prefix="localhost_log." suffix= ".txt"
timestamp="true" />
<Resource name= "jdbc/connectDB"
auth= "Container"
type="javax.sql.DataSource" />
<ResourceParams name="jdbc/connectDB" >
<parameter >
<name>factory</name >
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value >
</parameter >
<parameter >
<name>removeAbandoned</name >
<value>true</value >
</parameter >
<parameter >
<name>removeAbandonedTimeout</name >
<value>60</value >
</parameter >
<parameter >
<name>logAbandoned</name >
<value>false</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 >
<parameter >
<name>username</name >
<value>sa</value >
</parameter >
<parameter >
<name>password</name >
<value>123</value >
</parameter >
<parameter >
<name>driverClassName</name >
<value>net.sourceforge.jtds.jdbc.Driver</value >
</parameter >
<parameter >
<name>url</name >
<value>jdbc:jtds:sqlserver: //127.0.0.1:1433/tiannet;charset=gb2312</value>
</parameter >
</ResourceParams >
</Context>
参数说明
1) path 指定路径,也就是访问web的路径,这里为http://localhost:8080/tiannet
2) docBase 虚拟目录的路径,绝对路径。如果虚拟目录设置%CATALINA_HOME%/webapps目录的某个子目录下(如tiannet),则可直接写子目录名称(如tiannet)。
3) reloader 当网页被更新时是否重新编译。
4) maxActive 连接池的最大数据库连接数。设为0表示无限制。
5) maxIdle 数据库连接的最大空闲时间。超过此空闲时间,数据库连接将被标记为不可用,然后被释放。设为0表示无限制。
6) maxWait 最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。
7) removeAbandoned 回收被遗弃的(一般是忘了释放的)数据库连接到连接池中。
8) removeAbandonedTimeout 数据库连接过多长时间不用将被视为被遗弃而收回连接池中。
9) logAbandoned 将被遗弃的数据库连接的回收记入日志。
10) driverClassName JDBC驱动程序。
11)username : 连接数据库的用户名
12)password : 连接数据库的密码
13) url 格式化数据库连接字符串(这里的tiannet为数据库名),格式为:
jdbc:jtds:<server_type>://<server>[:<port>][/<database>][;<property>=<value>[;...]]
更多url的说明请参照:
http://jtds.sourceforge.net/faq.html
将上面的内容修改保存,并重新启动tomcat后,在%CATALINA_HOME%/conf/Catalina/localhost/目录下会多出一个xml文件,这里为:tiannet.xml。现在虚拟目录就生效了。
修改/WEB-INF/web.xml文件
在虚拟目录的根目录(这里为:E:/tiannet)下建立WEB-INF目录,在WEB-INF目录下新建一个web.xml文件,基本内容为:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app>
<display-name>tiannet web</display-name>
<description>connectDB test</description>
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/connectDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
注意<res-ref-name>jdbc/connectDB</res-ref-name>的jdbc/connectDB和server.xml文件中的Resource的name属性以及ResourceParams的name属性值是一样的。
测试连接池的代码
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<html>
<body>
<%
DataSource ds = null;
Connection conn = null;
ResultSet rs = null;
Statement stmt = null;
InitialContext ctx = null;
String m_strDriver = "net.sourceforge.jtds.jdbc.Driver", // 驱动字符串
m_strConURL = "jdbc:jtds:sqlserver"; // 连接字符串
try
{
ctx=new InitialContext();
ds=(DataSource)ctx.lookup("java:comp/env/jdbc/connectDB"); //注意connectDB的名称和上面一致
conn = ds.getConnection();
stmt = conn.createStatement();
String strSql = " select * from test"; //test为数据库中的一个表
rs = stmt.executeQuery(strSql);
while(rs.next())
{
out.println(rs.getString(1) + "");
out.println(rs.getString(2) + "");
}
}
catch(Exception ex)
{
out.println(ex.getMessage());
}
finally
{
rs.close();
stmt.close();
conn.close();
ctx.close();
}
%>
</body>
</html>
到这里所有的配置就结束了。
由于首次使用tomcat和jtds,所以花了比较多的时间。
其间遇到一个错误:
Can't open a socket on localhost:1433. Check host and port number and make sure the security
manager allows this connection. You can also try running the SocketApplet
(java.net.ConnectException: Connection refused: connect).
这个错误是因为windows2003server系统没有打上sp3的补丁,奇怪的是.net连接sqlserver2000不需要打补丁。
也可能会遇到这样的错误:
No suitable driver
这多半是连接字符串的格式不正确造成的。
最让我头疼的错误还是:
Cannot create JDBC driver of class '' for connect URL 'null'
我出现这个错误的原因是因为:在server.xml中设置docBase的值,也就是虚拟目录的名称(测试时用的DBTest),其大小写与建的虚拟目录名称大小写不一致(当时为DBtest)。
配置好这些东西后,登陆进tomcat的管理页面,点击commit changes按钮,你会发现server.xml文件发生了改变,那些修改的内容已经全部没了。而这些内容已经全部被移到%CATALINA_HOME%/conf/Catalina/localhost/下相应的xml文件中了(这里为tiannet.xml)。
其实在admin的界面也可以建立虚拟目录、配置连接池等。不需要手动修改server.xml 文件,配置好一切东西后,其连接池的配置信息会自动放置在%CATALINA_HOME%/conf/Catalina/localhost/的xml文件中。
但是我在这样做后,测试时遇到一个异常:
Name java:comp is not bound in this Context
到现在依然没有找到解决办法。
PS:
如果xml里有中文,则需将encoding设置为gb2312