关于如何使用mysql和数据库池设置tomcat的好教程是什么?

时间:2009-08-21 17:46:08

标签: mysql tomcat connection-pooling

我一直在寻找关于如何利用连接到Mysql 5的Tomcat 6中的连接池的一些好的指示,但似乎没有任何完整的引用。我无法拼凑不同的教程以获得清晰的图片。

我必须承认,我是处理Tomcat及其配置的初学者。

1 个答案:

答案 0 :(得分:5)

将MySQL驱动程序jar文件放在$ TOMCAT_HOME / lib /

在您的webapp中创建一个META_INF / context.xml文件(META_INF /文件夹与您的WEB_INF /文件夹处于同一级别),例如像:

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/tomcattest" docBase="tomcattest" reloadable="true" crossContext="true">
    <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
       maxActive="10" maxIdle="5" 
       username="mysqluser" password="mysqlpasswd"
       driverClassName="com.mysql.jdbc.Driver"  
       url="jdbc:mysql://192.168.1.30:3306/databasename?autoReconnect=true" />
 </Context>

您可能必须替换path =“/ tomcattest”docBase =“tomcattest”以匹配您的webapp。

您还需要在WEB_INF / web.xml中添加一些内容 - resource-ref 部分如下所示。它可能是例如看起来像:

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <display-name>tomcattest</display-name>
    <servlet>
        <description>
        </description>
        <display-name>MyServlet</display-name>
        <servlet-name>MyServlet</servlet-name>
        <servlet-class>MyServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>MyServlet</servlet-name>
        <url-pattern>/MyServlet/*</url-pattern>
    </servlet-mapping>

    <resource-ref>
        <description>DB Connection</description>
        <res-ref-name>jdbc/TestDB</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>

</web-app>

现在,您的servlet可以通过执行以下操作从池中获取Connections:

Context initContext = new InitialContext();
DataSource ds   = (DataSource)initContext.lookup("java:/comp/env/jdbc/TestDB");
Connection conn = ds.getConnection();
//use conn
conn.close();

更多信息here