【发布时间】:2010-08-17 08:07:17
【问题描述】:
我需要您的帮助来解决 Spring 的连接池问题。 我正在使用带有 Java 1.4 的 Spring(无注释)。
这里是数据源和连接池定义:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName">
<value>${database.jdbcName}</value>
</property>
<property name="url" value="jdbc:sybase:${database.url}">
</property>
<property name="username">
<value>${database.username}</value>
</property>
<property name="password">
<value>${database.password}</value>
</property>
<property name="maxActive">
<value>${database.maxActive}</value>
</property>
<property name="maxIdle" >
<value>${database.maxIdle}</value>
</property>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.SybaseDialect</prop>
<prop key="show_sql">true</prop>
<prop key="hibernate.connection.release_mode">after_transaction</prop>
<prop key="hibernate.dbcp.maxWait">100000</prop>
<prop key="hibernate.connection.autocommit">false</prop>
<prop key="cache.provider_class">org.hibernate.cache.NoCacheProvider</prop>
</props>
</property>
...
当所有连接都处于活动状态时,如果系统需要新连接,我会收到一条消息“正在打开 JDBC 连接”,并且所有进程都停止了。我不明白为什么所有线程都被锁定。
在 Spring 应用程序上下文中,所有服务和 DAO 类都定义为单例。
有什么想法吗?
感谢您的帮助。
贝朗热
【问题讨论】:
-
${database.maxActive} 和 ${database.maxIdle} 解析为什么?
-
嗨! maxActive=5 和 maxIdle=1。
标签: java multithreading spring transactions connection-pooling