现在的位置: 首页 > 综合 > 正文

tomcat中配数据源连接池的一点经验

2013年02月15日 ⁄ 综合 ⁄ 共 4744字 ⁄ 字号 评论关闭

反复试了很多遍,在tomcat中要完成这个功能还真不太容易,个人感觉呀,哈哈. 下面是我用到的文件以及做的改动.

1)首先是server.xml文件,这个文件的位置相信大家都知道,注意我在host标签中加入了context标签的内容。你也可以做一全局的,不过我没试出来,被我注掉了,不过没有删,如果高手用过全局的,麻烦把完整的实现发给小弟看看,

<Server port="8005" shutdown="SHUTDOWN" debug="0">

  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"
            debug="0"/>
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"
            debug="0"/>

  <!-- Global JNDI resources -->
  <GlobalNamingResources>

    <!-- Test entry for demonstration purposes -->
    <Environment name="simpleValue" type="java.lang.Integer" value="30"/>

    <!-- Editable user database that can also be used by
         UserDatabaseRealm to authenticate users -->
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
       description="User database that can be updated and saved">
    </Resource>
<!--
    <Resource type="javax.sql.DataSource" auth="Container" name="jdbc/test"/>

   <ResourceParams name="jdbc/test">
   <parameter>
   <name>maxActive</name>
   <value>200</value>
   </parameter>
   <parameter>
   <name>maxIdle</name>
   <value>30</value>
   </parameter>
   <parameter>
   <name>maxWait</name>
   <value>1000</value>
   </parameter>
   <parameter>
   <name>factory</name>
   <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
   </parameter>
   <parameter>
   <name>username</name>
   <value>root</value>
   </parameter>
   <parameter>
   <name>password</name>
   <value>mysql</value>
   </parameter>
   <parameter>
   <name>driverClassName</name>
   <value>com.mysql.jdbc.Driver</value>
   </parameter>
   <parameter>
   <name>url</name>
   <value>jdbc:mysql://127.0.0.1:3306/test</value>
   </parameter>
   </ResourceParams>
-->
    <ResourceParams name="UserDatabase">
      <parameter>
        <name>factory</name>
        <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
      </parameter>
      <parameter>
        <name>pathname</name>
        <value>conf/tomcat-users.xml</value>
      </parameter>
    </ResourceParams>

  </GlobalNamingResources>

  <Service name="Catalina">

  
    <Connector port="8080"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               debug="0" connectionTimeout="20000"
               disableUploadTimeout="true" />

    <Connector port="8009"
               enableLookups="false" redirectPort="8443" debug="0"
               protocol="AJP/1.3" />

    <Engine name="Catalina" defaultHost="localhost" debug="0">

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

      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                 debug="0" resourceName="UserDatabase"/>

 
      <Host name="localhost" debug="0" appBase="webapps"
       unpackWARs="true" autoDeploy="true"
       xmlValidation="false" xmlNamespaceAware="false">

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

  <Context path="/WebRoot" docBase="WebRoot" debug="0" reloadable="true" crossContext="true" >
<Resource name="jdbc/test" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/test">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://127.0.0.1:3306/test</value>
</parameter>
<parameter>
<name>username</name>
<value>root</value>
</parameter>
<parameter>
<name>password</name>
<value>mysql</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>20</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>10</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>-1</value>
</parameter>
</ResourceParams>

</Context>

 

      </Host>

    </Engine>

  </Service>

</Server>
 2)(这一步你也可以尝试不用)在tomcat/conf/Catalina/localhost目录下建一xml文件,如mytest.xml基中mytest指的是我的工程名(应用名或说是部署到tomcat中的应用的名字“一至的“)加上这么一句

<ResourceLink global="jdbc/XX" name="jdbc/XX" type="javax.sql.DataSource"/>或下面这句.我用的是下面这句,

global指的是全局,可能没起什么作用

<ResourceLink  name="jdbc/test" type="javax.sql.DataSource"/>

3)下面是测试面页

<%@ page contentType="text/html; charset=gb2312"%>
<%@ page import="java.sql.*,javax.sql.DataSource,javax.naming.*"%>
<html>
<head>
<title>test.jsp</title>
</head>

<body>
<%
try
{
Context initCtx=new InitialContext();
DataSource ds = (DataSource)initCtx.lookup("java:comp/env/jdbc/test");
Connection conn=ds.getConnection();
out.println("data from database:<br>");
Statement stmt=conn.createStatement();
ResultSet rs =stmt.executeQuery("select id, name from test");
while(rs.next())
{
out.println(rs.getInt("id"));
out.println(rs.getString("name"));

}
rs.close();
stmt.close();
}
catch(Exception e)
{
e.printStackTrace();
}
%>

</body>

</html>

抱歉!评论已关闭.