日期:2014-05-16  浏览次数:20548 次

Tomcat 和 Jetty 下 JNDI 配置 DBCP 连接池

Tomcat 和 Jetty 下 JNDI 配置 DBCP 连接池

Tomcat 的配置如下:(在某个App的context.xml中,或某个虚拟主机的ROOT.xml中)

<?xml version="1.0" encoding="UTF-8"?>
<Context path="">
     <Resource name="jdbc/pgsqldbcp" 
               auth="Container" 
               type="javax.sql.DataSource" 
               factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
               driverClassName="org.postgresql.Driver"
               url="jdbc:postgresql://localhost/xxxxdb"
               username="postgres" 
               password="xxxx" 
               maxActive="20" 
     />
</Context>
?


这里使用Tomcat带的tomcat-dbcp.jar包,它包含了 commons-collections.jar, commons-pool.jar, commons-dbcp.jar,如果不使用tomcat-dbcp.jar 则需要将上述3个包拷贝到 Tomcat的lib中。另外把数据库的驱动包拷贝到Tomcat的lib中,就可以了。

Jetty 下的配置如下:(在jetty-env.xml文件中)

<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" 
     "http://jetty.mortbay.org/configure.dtd">
<Configure class="org.mortbay.jetty.webapp.WebAppContext">
    <New id="pgsqldbcp" class="org.mortbay.jetty.plus.naming.Resource">
        <Arg>jdbc/pgsqldbcp</Arg>
        <Arg>
            <New class="org.apache.commons.dbcp.BasicDataSource">
                <Set name="driverClassName">org.postgresql.Driver</Set>
                <Set name="url">jdbc:postgresql://localhost/xxxxdb</Set>
                <Set name="username">postgres</Set>
                <Set name="password">xxxx</Set>
                <Set name="maxActive">10</Set>
            </New>
        </Arg>
    </New>
</Configure>
?


如果使用maven-jetty-plugin插件开发应用,在pom.xml如下配置:

<plugin>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>maven-jetty-plugin</artifactId>
    <version>6.1.7</version>
    <configuration>
        <webDefaultXml>src/test/resources/webdefault.xml</webDefaultXml>
        <jettyEnvXml>src/test/resources/jetty-env.xml</jettyEnvXml>
        <contextPath>/exjour</contextPath>
        <scanIntervalSeconds>10</scanIntervalSeconds>
        <connectors>
            <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
                <port>8000</port>
                <maxIdleTime>60000</maxIdleTime>
            </connector>
        </connectors>
    </configuration>
</plugin>
?


以上,就完成了Tomcat和Jetty下DBCP在JNDI中的配置,在开发中spring中的dataSource可以按如下形式写:

???
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName" value="java:comp/env/jdbc/pgsqldbcp"/>
    </bean>
?

?