Tomcat 6.0+ SQL Server 2005连接池的配置
Tomcat连接池连接SQLServer2005Express在Tomcat作为服务器调试JSP时,可以通过配置数据库连接池,实现简单配置。
下面是配置连接SQL Server 2005 Express的过程,JDBC为Microsoft的Microsoft SQL Server 2005 JDBC Driver1.2。
首先要保证能够正常调试JSP,也就是安装JSDK,和Tomcat,我选择的较旧的版本,j2sdk1.4.2_06和Tomcat 5.0.16。
安装完成后配置ClassPath,(安装目录为:D:/j2sdk1.4.2_06和D:/Program Files/Apache Software Foundation/Tomcat 5.0)
1、配置系统变量JAVA_HOME:D:/j2sdk1.4.2_06
2、系统变量CATALINA_HOME:/Program Files/Apache Software Foundation/Tomcat 5.0
CATALINA_BASE:D:/Program Files/Apache Software Foundation/Tomcat 5.0
3、配置系统变量classpath:
.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar;D:/Program Files/Apache Software Foundation/Tomcat 5.0/common/lib/servlet-api.jar
4、在系统变量Path最后添加:%JAVA_HOME%/bin
5、将JDBC1.2安装目录下的sqljdbc.jar,复制到D:/Program Files/Apache Software Foundation/Tomcat 5.0/common/lib,将D:/j2sdk1.4.2_06/lib/tools.jar也复制到该目录。
以上配置完成后重新启动计算机,使设置生效,然后启动Tomcat,打开http://localhost:8080出现,Tomcat的欢迎画面说明成功。
下面是数据库的配置,SQL Server 2005 Express在安装完成后是不允许通过TCP/IP连接的,因此需要配置:
进入SQL Server 2005 Express配置工具--SQL Server 外围应用配置器,在服务和连接的外围应用配置器中,配置使用TCP/IP连接。如下图:
http://feiliboos.iyunv.com/blog/UploadFiles/2008-3/271256100188.png
配置完成后,重新启动SQLServer服务
可以配置SQL SERVER安全性,允许设定的用户连接,而不是使用sa进行连接。
另外值得注意的是,需要设置SQL SERVER使用SQL SERVER的身份验证模式:
在SQL SERVER Management Studio对象资源管理器中,右击服务器实例名称,在属性窗口中设置使用SQL SERVER和Windows 身份验证模式:
http://feiliboos.iyunv.com/blog/UploadFiles/2008-3/27135626406.png
此时,便可以使用你创建的用户来访问SQL SERVER了,这里我创建了一个数据库Teacherinfo,并创建用户teacher,密码123456,来作为数据库OWER,通过网络访问
下面开始Tomcat 的配置:
1、进入http://localhost:8080/,打开Tomcat Administrator,登入,选择Data Sources,然后选择创建新的数据源,名称为MSSQL,需要在程序中使用,可以随便取,最好有标示作用:
http://feiliboos.iyunv.com/blog/UploadFiles/2008-3/271313603486.png
配置说明:
JNDI Name:注册到JNDI树上的名字(可以随便写)
Data Source URL:连接数据库的URL
JDBC Driver Class:Jbdc数据库的驱动名称
User Name:访问数据库的用户
Password:访问数据库的密码
Max. Active Connections:最大活跃连接数,指同时可以有多少个连接,设置为0没有限制
Max. Idle Connections:最大空闲连接数,表示没有数据库连接时,连接池也必须保持最大空闲连接数,设置为0没有限制
Max. Wait for Connection:连接建立等待时间,单位为毫秒,设置为-1无限制
Validation Query::此参数用来查询池中的空闲连接(可以不配置)
注意:在SQL SERVER 2005中连接项与SQL SERVER 2000不同:
Data Source URL: jdbc:sqlserver://localhost:1433;DatebaseName=teacherinfo
JDBC Driver Class: com.microsoft.sqlserver.jdbc.SQLServerDriver
其他选项根据需要填写,用户名和密码不要填写错了。
填写完成后,单击SAVE保存,还要单击:Commit Changes按钮提交修改,否则将不会生效。
完成后,打开Tomcat的server.xml文件,发现已经在 <GlobalNamingResources>和</GlobalNamingResources>之间添加了如下代码:(所以也可以自己直接添加)
<Resource type="javax.sql.DataSource" name="MSSQL"/>
<ResourceParams name="MSSQL">
<parameter>
<name>url</name>
<value>jdbc:sqlserver://localhost:1433;DatebaseName=teacherinfo</value>
</parameter>
<parameter>
<name>password</name>
<value>123456</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>4</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.microsoft.sqlserver.jdbc.SQLServerDriver</value>
</parameter>
<parameter>
<name>username</name>
<value>teacher</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>2</value>
</parameter>
</ResourceParams>
2、配置完成了,下面就是如何应用到程序中去了,假设有一个WEB应用程序,mclass可以通过http://localhost:8080/mclass 的形式访问,那么在:D:/Program Files/Apache Software Foundation/Tomcat 5.0/conf/Catalina/localhost目录中应该有一个mclass.xml文件,内容至少应该包含如下:
<Context path="/mclass" displayName="Welcome to Tomcat" docBase="F:/mclass"></Context> 现在在<Context></Context>之间添加上数据库连接的内容,否则该程序将无法使用连接池,添加后如下(内容是从server.xml中复制过早来的):
<Context path="/mclass" displayName="Welcome to Tomcat" docBase="F:/eclipse/workspace/mclass">
<Resource type="javax.sql.DataSource" name="MSSQL"/>
<ResourceParams name="MSSQL">
<parameter>
<name>url</name>
<value>jdbc:sqlserver://localhost:1433;DatebaseName=teacherinfo</value>
</parameter>
<parameter>
<name>password</name>
<value>123456</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>4</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.microsoft.sqlserver.jdbc.SQLServerDriver</value>
</parameter>
<parameter>
<name>username</name>
<value>teacher</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>2</value>
</parameter>
</ResourceParams>
</Context>
3、现在当然还不可以,需要配置程序目录中的web.xml,本程序在F:/mclass
打开F:/mclass/WEB-INF中的web.xml,添加如下代码,到<web-app></web-app>之间
<resource-ref>
<description>sqlserverDB Connection</description>
<res-ref-name>MSSQL</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref> description是描述,自己定义
res-ref-name是连接的名称,必须与在Tomcat中连接池的名称一致,此处是MSSQL
res-type当然是javax.sql.DataSource了
res-auth是程序中使用的
至此,配置完全完成,下面就是测试了,首先重新启动Tomcat,以使配置生效,然后在F:/mlass中创建一个文件如test.jsp,内容可以参考如下代码:
<%@ page contentType="text/html;charset=GBK"%>
<%@ page import="java.sql.*" %>
<%@ page import="javax.naming.*" %>
<%@ page import="javax.sql.*" %>
<html>
<head>
<title>test</title>
</head>
<body>
<%
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
ResultSetMetaData md = null;
try
{
Context initCtx = new InitialContext();
DataSource ds = (DataSource)initCtx.lookup("java:comp/env/MSSQL");
if(ds!=null)
{
out.println("已经获得DataSource<br>"); //显示获取的DataSource
out.println(ds.toString());
conn = ds.getConnection();
out.println("conn=" + conn + "<br>");
stmt = conn.createStatement();
rs = stmt.executeQuery("select * from teacher"); //获取teacher表中的数据
md = rs.getMetaData();
out.println("<table border=1>");
out.println("<tr align='center'>");
//获取字段名称,作为表格第一行
for(int i=0; i<md.getColumnCount();i++)
out.println("<td>" + md.getColumnName(i+1) + "</td>");
out.println("</tr>");
//显示获取的表格数据
while(rs.next())
{
out.println("<tr>");
for(int j=0;j<md.getColumnCount();j++)
out.println("<td>" + rs.getString(j+1) + " </td>");
out.println("</tr>");
}
out.println("</table>");
//关闭连接,此处关闭连接,只是将其又放回到连接池中,还可以再次使用
conn.close();
}
}
catch(Exception e)
{
out.println(e.toString());
System.out.println(e.toString());
}
%>
<</body>
</html>
页:
[1]