CSDN博客

img tiannet

Tomcat5.0与SqlServer2000配置连接池(jtds驱动)

发表于2004/10/9 21:49:00  5627人阅读

分类: Java/JSP/EJB/JMS...

软件:
(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


阅读全文
0 0

相关文章推荐

img
取 消
img