gpt4 book ai didi

java - DBCP2初始化

转载 作者:行者123 更新时间:2023-12-02 08:55:55 25 4
gpt4 key购买 nike

我正在将 DBCP2 与 Spring Security(XML 配置)结合使用。我的问题是,每次我进行 INSERT 或 UPDATE 都会创建连接(initialSize = 100),所以一段时间后我会收到“连接太多”。

我不知道我的配置或其他步骤是否做错了什么。

这是我的配置:

<强>1。 springSecurity.xml 文件

<beans:bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close"> 
<beans:property name="driverClassName" value="com.mysql.jdbc.Driver" />
<beans:property name="url" value="${bd.url}" />
<beans:property name="username" value="${bd.user}" />
<beans:property name="password" value="${bd.password}" />
<beans:property name="validationQuery" value="SELECT 1" />
<beans:property name="removeAbandonedTimeout" value="30" />
<beans:property name="removeAbandonedOnBorrow" value="true" />
<beans:property name="removeAbandonedOnMaintenance" value="true" />
<beans:property name="initialSize" value="100" />
<beans:property name="maxTotal" value="1000" />
<beans:property name="maxIdle" value="50" />
<beans:property name="timeBetweenEvictionRunsMillis" value="30" />
</beans:bean>

<beans:bean id="npjt" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate" >
<beans:constructor-arg ref="dataSource"/>
</beans:bean>

<beans:bean id="DAOEmail" class="general.Email" >
<beans:property name="npjt" ref="npjt" />
</beans:bean>

<beans:bean id="DAOAddress" class="general.Address" >
<beans:property name="npjt" ref="npjt" />
</beans:bean>

<beans:bean id="DAOPhone" class="general.Phone" >
<beans:property name="npjt" ref="npjt" />
</beans:bean>

<beans:bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<beans:property name="dataSource" ref="dataSource"/>
</beans:bean>

<tx:annotation-driven transaction-manager="txManager"/>

<强>2。 DAO

public interface DAOEmail{
public void save(HashMap<String, String> params);
public void update(HashMap<String, String> params);
}

public interface DAOPhone{
public void save(HashMap<String, String> params);
public void update(HashMap<String, String> params);
}

public interface DAOAddress{
public void save(HashMap<String, String> params);
public void update(HashMap<String, String> params);
}

<强>3。从 Servlet 调用

 ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("springSecurity.xml");
DAOAddress dao = (DAOAddress) context.getBean("DAOAddress");
dao.save(params);
context.registerShutdownHook();

每个 Servlet 的流程相同(电话、电子邮件、地址)

<强>4。每个文件的操作(地址、电话、电子邮件)

public class Address implements DAOAddress {

private NamedParameterJdbcTemplate npjt;

public NamedParameterJdbcTemplate getNpjt() {
return npjt;
}

public void setNpjt(NamedParameterJdbcTemplate npjt) {
this.npjt = npjt;
}

@Transactional
@Override
public void save(HashMap<String, String> params) {
try {
....
npjt.update();
....
} catch (Exception e) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
}


@Transactional
@Override
public void update(HashMap<String, String> params) {
try {
....
npjt.update();
....
} catch (Exception e) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}

}

谢谢!!!

最佳答案

您需要在数据源配置中修改该值

<beans:property name="initialSize" value="100" />

“dataSource”bean 中的“initialSize”是池启动时创建的初始连接数。您的配置中的该值为“100”。两高。

删除该属性以使用默认值 (0) 或使用较低的值可以解决您的问题。

关于java - DBCP2初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60483505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com