Aimd's Blog

  博客园 :: 首页 :: 新随笔 ::  :: 订阅 订阅 :: 管理 ::
  29 随笔 :: 0 文章 :: 81 评论 :: 0 引用
前提假设Eclipse已经设置成功,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"按情况填写。
   此步骤可以用如下方法替代,在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>

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>

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;
    }
}

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>

6.运行结果。


posted on 2007-11-24 23:01 Aimd 阅读(1975) 评论(8)  编辑 收藏 所属分类: Eclipse&&Java技术DataBase

评论

写了这么多,好辛苦的。但是没人看,所以我来提提人气:)
  回复  引用    

#2楼 [楼主] 2007-11-28 15:20 Aimd      
我给自己记下来,否则就忘了。
四天 阅读(27),也不少:)
  回复  引用  查看    

#3楼  2008-02-11 14:15 zhangxun [未注册用户]
我也帮你提提,另外我想教一下,连接池是修改conf下的server.xml还是修改context.xml? 还是都可以?我以前是修改server.xml文件,这次看到书上说修改context.xml文件。
  回复  引用    

#4楼 [楼主] 2008-02-13 15:47 Aimd      
@zhangxun
名字怎么这么眼熟啊,如果我猜对了,你怎么研究这个啊?

tomcat6.0之前都修改server.xml,tomcat6之后提倡修改context.xml,毕竟不同的工程可以使用不同的context嘛
  回复  引用  查看    

#5楼  2008-02-15 23:42 王洋洋 [未注册用户]
两种修改方法都可以,server.xml与context.xml
  回复  引用    

#6楼  2008-04-02 12:42 bit1988 [未注册用户]
应该不是直接在webcontent/web-inf目录下建立context.xml文件

应该在tomcat的server目录下建context.xml

试过楼主的方法,在webcontent/web-inf目录下建立context.xml文件 就行不通……
  回复  引用    

#7楼  2008-04-04 10:19 董运科 [未注册用户]
谢谢啊,正是我要找的东西。
  回复  引用    

#8楼 [楼主] 2008-04-06 10:47 Aimd      
--引用----------
bit1988: 应该不是直接在webcontent/web-inf目录下建立context.xml文件

应该在tomcat的server目录下建context.xml

试过楼主的方法,在webcontent/web-inf目录下建立context.xml文件 就行不通……
----------------
我和你恰恰相反,共同学习吧。
  回复  引用  查看    


标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-11-26 12:42 编辑过


相关链接: