1. S2Container连接池的配置——S2DBCP
在S2container框架里,数据库和连接池的配置在JDBC.dicon里。
配置的例子如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
"http://www.seasar.org/dtd/components24.dtd">
<components namespace="jdbc">
<include path="jta.dicon"/>
<include path="jdbc-extension.dicon"/>
<component class="org.seasar.extension.jdbc.impl.BasicResultSetFactory"/>
<component class="org.seasar.extension.jdbc.impl.ConfigurableStatementFactory">
<arg>
<component class="org.seasar.extension.jdbc.impl.BasicStatementFactory"/>
</arg>
<property name="fetchSize">100</property>
<!--
<property name="maxRows">100</property>
-->
</component>
<component name="xaDataSource"
class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
<property name="driverClassName">
"oracle.jdbc.driver.OracleDriver"
</property>
<property name="URL">
"jdbc:oracle:thin:@xxx:1521:yyy"
</property>
<property name="user">"aaa"</property>
<property name="password">"bbb"</property>
</component>
<component name="connectionPool"
class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl">
<property name="timeout">600</property>
<property name="maxPoolSize">10</property>
<property name="allowLocalTx">true</property>
<property name="validationQuery">"select * from dual"</property>
<property name="validationInterval">10000</property>
<destroyMethod name="close"/>
</component>
<component name="dataSource"
class="org.seasar.extension.dbcp.impl.DataSourceImpl"/>
</components>
一些配置项的说明如下:
属性 | 说明 | 例 |
---|---|---|
driverClassName | JDBC Driver类名 | "oracle.jdbc.driver.OracleDriver" |
URL | RDBMS的URL | "jdbc:oracle:thin:@xxx:1521:yyy" |
user | 用户名 | "hoge" |
password | 密码 | "password" |
loginTimeout | 连接timeout(单位:秒) | 2 |
属性 | 说明 | 例 |
---|---|---|
XADataSource | XADataSource的实例。 | xaDataSource |
transactionManager | TransactionManager的实例。 | TransactionManager |
timeout | 连接池里的链接指定的timeout时间未使用的话,则自动关闭(单位:秒)。默认600。 | 600 |
maxPoolSize | 连接池的最大连接数,超过这个数的请求怎等待被使用的连接返回。设为0的话,不限。默认是10。 | 10 |
minPoolSize | 连接池最小保持连接数默认是0。 | 10 |
maxWait | 连接池没有连接时的最大等待时间 (単位:毫妙) 。超过这个时间就抛出SQLException 。 设为0的话就是不等待,直接抛出SQLException。设为-1的话是无限制等待知道获得连接对象。 | -1 |
allowLocalTx | 是否允许不设JTA限制,JDBC本地事务。设为false的话,如果不是在JTA开始后获取连接对象,则抛出java.lang.IllegalStateException。开发的时候设为false,能检查是否漏设S2Tx。默认是true。 | true |
validationQuery | 检查连接是否活的。null 或者空字符的话,不检查。默认是null 。 | "select * from dual" |
validationInterval | 检查连接死活的时间间隔(单位:毫妙) 0以下的话不检查。默认是0。 | 10000 |
也可以使用Web服务器里定义的DataSource。例:
<component name="xaDataSource"
class="javax.sql.XADataSource">
@org.seasar.extension.j2ee.JndiResourceLocator@lookup("JNDI名")
</component>
或
<component name="xaDataSource"
class="org.seasar.extension.dbcp.impl.DataSourceXADataSource">
<property name="dataSourceName">"JNDI名"</property>
</component>