tomcat自帶的JNDI鏈接池挺糟糕的,開發時用用還行,生產環境最好仍是換成比的成熟一些的鏈接池,好比Proxool就不錯,用它作過好幾個項目,不是通常的穩定。 java
下面講述一下如何在tomcat 6下配置Proxool的JNDI鏈接池。
環境 mysql
o/s:ubuntu 9.04
tomcat:6.0.18
jdk:2.6.28-13-generic
proxool:0.9.1
proxool-0.9.1.jar
proxool-cglib.jar
commons-logging-1.0.4.jar
<tomcat_home>/conf/context.xml
<context>
</congext>
<Resource name="jdbc/jndidb" auth="Container" type="javax.sql.DataSource" factory="org.logicalcobwebs.proxool.ProxoolDataSource" proxool.alias="hrs" user="root" password="jim" delegateProperties="foo=bar" proxool.driver-url="jdbc:mysql://localhost:3306/testdb?useUnicode=true&characterEncoding=UTF-8" proxool.driver-class="com.mysql.jdbc.Driver" proxool.house-keeping-sleep-time="900000" proxool.maximum-active-time="5" proxool.prototype-count="10" proxool.statistics="1m,15m,1d" proxool.simultaneous-build-throttle="10" proxool.minimum-connection-count="5" proxool.maximum-connection-count="25" proxool.house-keeping-test-sql="select now()" proxool.test-before-use="true"/>
<tomcat_home>/conf/context.xml
package com.demo; import java.io.IOException; import java.io.PrintWriter; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.sql.DataSource; public class DemoServlet extends HttpServlet { private static final long serialVersionUID = -911762482064261559L; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { PrintWriter out = resp.getWriter(); Context ctx; try { ctx = new InitialContext(); DataSource dataSource = (DataSource)ctx.lookup("java:comp/env/jdbc/jndidb"); if (dataSource != null){ out.println(dataSource.getClass()); }else{ out.println("jndi configure failure!"); } } catch (NamingException e) { e.printStackTrace(); } } }