首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

帮忙看一下数据库连接池(不好意思就10分了 -||| )解决思路

2012-01-03 
帮忙看一下数据库连接池(不好意思就10分了-_-||| )我刚学没多长时间,按照网上的方法我配置了一个数据连接

帮忙看一下数据库连接池(不好意思就10分了 -_-||| )
我刚学没多长时间,按照网上的方法我配置了一个数据连接池。但是不知道对不对。
下面是源程序:
(测试程序我放在默认的ROOT文件夹里)
D:\jakarta-tomcat-5.0.28\conf、server.xml   <host> </host>

              <Logger   className= "org.apache.catalina.logger.FileLogger "
                                  directory= "logs "     prefix= "localhost_log. "   suffix= ".txt "
                        timestamp= "true "/>

 
    <Context   path= " "   docBase= "ROOT "  
                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> 1000 </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> tytymnty110110 </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/airin_b2b;charset=gb2312 </value>  
            </parameter>  
        </ResourceParams>  
    </Context>


在:D:\jakarta-tomcat-5.0.28\webapps\ROOT\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>  



测试程序:
<%@   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为数据库中的一个表          
                    rs   =   stmt.executeQuery(strSql);  
                      while(rs.next())  
                      {  
                            out.println(rs.getString(1)   +   " ");                                    
                            out.println(rs.getString(2)   +   " ");  

                  }   rs.close();  
                      stmt.close();  
                      conn.close();  
                      ctx.close();  
      }  


      catch(Exception   ex)  
      {  
                out.println(ex.getMessage());  
      }  
    //   finally  
    //   {  

    //   }  
%>
</body>  
</html>  


Tomcat启动时提示:

AbandonedObjectPool   is   used   (org.apache.commons.dbcp.AbandonedObjectPool@2b249)
LogAbandoned:   tree
RemoveAbandonedTimeout:60


[解决办法]
给你一个例子,照着看吧(tomcat5.0后的版本不用在web。xml中不用声明对使用数据源的引用):

<Host name= "localhost " debug= "0 " appBase= "webapps " unpackWARs= "true " autoDeploy= "true " xmlValidation= "false " xmlNamespaceAware= "false ">
<!-- 配置项目的Context 信息-->
<Context path= "/desconn " reloadable= "true " docBase= "D:TestConnDes\WebRoot " workDir= "D:\TestConnDes\WebRoot\WEB-INF\Work ">
<!-- 配置数据源-->
<Resource auth= "Container " description= "XCPM Oracle Connection " name= "jdbc/desconn " type= "javax.sql.DataSource "/>
<ResourceParams name= "jdbc/desconn ">
<parameter>
<name> factory </name>
<value> org.apache.commons.dbcp.BasicDataSourceFactory </value>
</parameter>
<parameter>
<name> maxActive </name>
<value> 50 </value>
</parameter>
<parameter>
<name> maxWait </name>
<value> 1000 </value>
</parameter>
<parameter>
<name> username </name>
<value> sa </value> <!-- 数据库用户名-->
</parameter>
<parameter>
<name> password </name>
<value> 123456 </value> <!-- 数据库密码-->
</parameter>
<parameter>
<name> url </name>
<value> jdbc:microsoft:sqlserver://192.168.0.0:1433;DatabaseName=testDB </value> <!-- 数据库URL--> </parameter>
<parameter>
<name> driverClassName </name>
<value> com.microsoft.jdbc.sqlserver.SQLServerDriver </value> <!-- 数据库驱动--> </parameter>
<parameter>
<name> maxIdle </name>
<value> 30 </value>
</parameter>
</ResourceParams>
</Context>
</Host>


页面中使用数据源:

<%@ page language= "java " pageEncoding= "UTF-8 "%>
<%@ page import= "java.util.* " %>
<%@ page import= "java.sql.* " %>
<%@ page import= "javax.sql.* " %>
<%@ page import= "javax.naming.* " %>


<%
String path = request.getContextPath();
String basePath = request.getScheme()+ ":// "+request.getServerName()+ ": "+request.getServerPort()+path+ "/ ";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN ">
<html>
<head>
<base href= " <%=basePath%> ">

<title> My JSP 'TestDesConn.jsp ' starting page </title>



<meta http-equiv= "pragma " content= "no-cache ">
<meta http-equiv= "cache-control " content= "no-cache ">
<meta http-equiv= "expires " content= "0 ">
<meta http-equiv= "keywords " content= "keyword1,keyword2,keyword3 ">
<meta http-equiv= "description " content= "This is my page ">

<!--
<link rel= "stylesheet " type= "text/css " href= "styles.css ">
-->
</head>
<body>
测试tomcat数据源加密程序 <br>
<%
int i = 0 ;
try{
Context ctx = null;
DataSource ds = null;
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;

String jndi_ds = "java:comp/env/jdbc/desconn " ;

ctx = new InitialContext();
ds = ( DataSource ) ctx.lookup(jndi_ds);
conn = ds.getConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery( "select * from orders ");

while (rs.next()) {
i++;
}
}catch (Exception e) {
e.printStackTrace();
}
System.out.println( "数据库中一共有 " + i + " 条订单记录。 ");
%>
</body>
</html>

热点排行