前提假设Eclipse已经设置成功,Tomcat插件也设置成功。
1.由于tomcat6运行web应用时是在eclipse的workspace下建立一个server工程,而不是把web工程拷贝到tomcat路径下运行,所以在eclipse运行tomcat、使用它的连接池需要更改的是eclipse的workspace下server工程里面的server.xml配置,将来发布后再更改tomcat安装路径下conf下的server.xml。
在server.xml的host下加入:
此步骤可以用如下方法替代,在web工程的webcontent/web-inf目录下建立context.xml文件,这样避免两次去更改server.xml配置,也可使不同工程使用不同context配置,这是tomcat6提倡的方法,内容如下:
2.在webapps/项目名/WEB-INF中的web.xml中之前增加以下配置:
3.把以下几个.jar文件复制到tomcat安装目录下的lib文件夹中
commons-collections-3.1.jar
commons-dbcp-1.2.1.jar
commons-pool-1.2.jar
msutil.jar
msbase.jar
mssqlserver.jar
4.关键一步。确认sqlserver2000可以远程连接,这除了开放1433端口外还要,升级数据库到sp3或者sp4,否则连接会发出SQLNestedException: Cannot create PoolableConnectionFactory ([Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket错误。
5.编写java类,用于返回connection对象。
6.测试。
jsp文件内容:(注意不能用main函数测试,这样就脱离了Tomcat环境,只是一个java 应用,不可能使用tomcat连接池方法)
1.由于tomcat6运行web应用时是在eclipse的workspace下建立一个server工程,而不是把web工程拷贝到tomcat路径下运行,所以在eclipse运行tomcat、使用它的连接池需要更改的是eclipse的workspace下server工程里面的server.xml配置,将来发布后再更改tomcat安装路径下conf下的server.xml。
在server.xml的host下加入:
<Context docBase="MyStruts" path="/MyStruts" reloadable="true">
< Resource name ="jdbc/DBUtil" auth ="Container" type ="javax.sql.DataSource"
maxActive ="100" maxIdle ="30" maxWait ="10000"
username ="sa" password ="1234" driverClassName ="com.microsoft.jdbc.sqlserver.SQLServerDriver"
url ="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=JiLv" />
</Context>
其中,DBUtil任意,将来和下一步的web.xml里名字对应即可,url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=JiLv"按情况填写。< Resource name ="jdbc/DBUtil" auth ="Container" type ="javax.sql.DataSource"
maxActive ="100" maxIdle ="30" maxWait ="10000"
username ="sa" password ="1234" driverClassName ="com.microsoft.jdbc.sqlserver.SQLServerDriver"
url ="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=JiLv" />
</Context>
此步骤可以用如下方法替代,在web工程的webcontent/web-inf目录下建立context.xml文件,这样避免两次去更改server.xml配置,也可使不同工程使用不同context配置,这是tomcat6提倡的方法,内容如下:
<
Context
docBase
="MyStruts"
path
="/MyStruts"
reloadable
="true"
>
< WatchedResource > WEB-INF/web.xml </ WatchedResource >
< Resource name ="jdbc/DBUtil" auth ="Container" type ="javax.sql.DataSource"
maxActive ="100" maxIdle ="30" maxWait ="10000"
username ="sa" password ="1234" driverClassName ="com.microsoft.jdbc.sqlserver.SQLServerDriver"
url ="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=JiLv" />
</ Context >
< WatchedResource > WEB-INF/web.xml </ WatchedResource >
< Resource name ="jdbc/DBUtil" auth ="Container" type ="javax.sql.DataSource"
maxActive ="100" maxIdle ="30" maxWait ="10000"
username ="sa" password ="1234" driverClassName ="com.microsoft.jdbc.sqlserver.SQLServerDriver"
url ="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=JiLv" />
</ Context >
2.在webapps/项目名/WEB-INF中的web.xml中之前增加以下配置:
<
resource-ref
>
< description > SQL Server Datasource </ description >
< res-ref-name > jdbc/DBUtil </ res-ref-name >
< res-type > javax.sql.DataSource </ res-type >
< res-auth > Container </ res-auth >
</ resource-ref >
< description > SQL Server Datasource </ description >
< res-ref-name > jdbc/DBUtil </ res-ref-name >
< res-type > javax.sql.DataSource </ res-type >
< res-auth > Container </ res-auth >
</ resource-ref >
3.把以下几个.jar文件复制到tomcat安装目录下的lib文件夹中
commons-collections-3.1.jar
commons-dbcp-1.2.1.jar
commons-pool-1.2.jar
msutil.jar
msbase.jar
mssqlserver.jar
4.关键一步。确认sqlserver2000可以远程连接,这除了开放1433端口外还要,升级数据库到sp3或者sp4,否则连接会发出SQLNestedException: Cannot create PoolableConnectionFactory ([Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket错误。
5.编写java类,用于返回connection对象。
package
com.lyb;
import java.sql.Connection;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class DBUtil {
public static Connection getConnection() {
try {
Context initContext = new InitialContext();
if (initContext == null )
throw new Exception( " No Context " );
Context envContext = (Context) initContext.lookup( " java:/comp/env " );
DataSource ds = (DataSource) envContext.lookup( " jdbc/DBUtil " );
if (ds != null ) {
Connection conn = ds.getConnection();
if (conn != null ) {
return conn;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return null ;
}
}
import java.sql.Connection;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class DBUtil {
public static Connection getConnection() {
try {
Context initContext = new InitialContext();
if (initContext == null )
throw new Exception( " No Context " );
Context envContext = (Context) initContext.lookup( " java:/comp/env " );
DataSource ds = (DataSource) envContext.lookup( " jdbc/DBUtil " );
if (ds != null ) {
Connection conn = ds.getConnection();
if (conn != null ) {
return conn;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return null ;
}
}
6.测试。
jsp文件内容:(注意不能用main函数测试,这样就脱离了Tomcat环境,只是一个java 应用,不可能使用tomcat连接池方法)
<%
@ page contentType
=
"
text/html;charset=gb2312
"
%>
<% @ page import = " java.sql.* " %>
<% @ page import = " javax.sql.* " %>
<% @ page import = " javax.naming.* " %>
<% @ page import = " com.lyb.* " %>
< HTML >
< HEAD >
< TITLE > JSP测试页面 </ TITLE >
</ HEAD >
< BODY >
<%
Connection conn = DBUtil.getConnection();
Statement st = conn.createStatement();
String sql = " select * from goods " ;
ResultSet rs = st.executeQuery(sql);
while (rs.next()) {
%>
第一个字段内容为: <% = rs.getString( 1 ) %>
第二个字段内容为: <% = rs.getString( 2 ) %>
< br >
<%
}
%>
<%
out.print( " 使用jdbc驱动操作数据库操作成功 " );
%>
<%
rs.close();
st.close();
conn.close();
%>
</ BODY >
</ HTML >
<% @ page import = " java.sql.* " %>
<% @ page import = " javax.sql.* " %>
<% @ page import = " javax.naming.* " %>
<% @ page import = " com.lyb.* " %>
< HTML >
< HEAD >
< TITLE > JSP测试页面 </ TITLE >
</ HEAD >
< BODY >
<%
Connection conn = DBUtil.getConnection();
Statement st = conn.createStatement();
String sql = " select * from goods " ;
ResultSet rs = st.executeQuery(sql);
while (rs.next()) {
%>
第一个字段内容为: <% = rs.getString( 1 ) %>
第二个字段内容为: <% = rs.getString( 2 ) %>
< br >
<%
}
%>
<%
out.print( " 使用jdbc驱动操作数据库操作成功 " );
%>
<%
rs.close();
st.close();
conn.close();
%>
</ BODY >
</ HTML >
这篇说明是来自:http://skywind.suprglu.com/
主要是数据库的升级问题.