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

本文介绍如何在Tomcat服务器中配置JDBC数据源,包括修改server.xml文件以加入数据源定义,创建资源链接,并通过JSP页面进行连接测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

反复试了很多遍,在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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值