webservice用完关闭连接_连接池泄露的问题

博客内容描述了一个关于Webservice调用导致的连接池泄露问题。应用一使用Spring 1.2 + Hibernate 3,应用二使用Spring 3.x + MyBatis。在应用一通过Webservice调用应用二的方法后,出现线程池膨胀,影响其他功能连接数据库。通过在datasource配置上添加destroy方法暂时解决了问题,但寻求根本解决方案。
摘要由CSDN通过智能技术生成

昨天发的帖子可能描述的不是很清楚,今天整理了再发一次,求大师们帮忙看看,两个帖子一起结!

1,应用一datasource配置

class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

org.hibernate.dialect.Oracle9Dialect

true

true

com.eka.util.MyDialect

10

50

1000

100

2

120

false

2,应用一webservice调用

public class FinanceClient {

public String serviceClient(String methodName,String xml){

try {

Configuration objConfiguration=new Configuration();

String Url=objConfiguration.getValue("finance_url");

String Qname=objConfiguration.getValue("finance_qname");

Service service = new Service();

Call call = (Call) service.createCall();

// 设置调用服务地址

call.setTargetEndpointAddress(new java.net.URL(Url));

//此处一定要配置wsdl的namespace参数 找wsdl中 wsdl:definitions标签下的targetNamespace   http://webservice.myself.gzticket.gmcc.com

call.setOperationName(new QName(Qname, methodName));

//此处需要配置传入参数类型与参数名称,如果未设置jax-ws则无法接受参数,会认为传入的参数为null

call.addParameter("linkNo",org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN);

//如果设置类传入参数类型,此处也需要设置返回参数类型

call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);

call.setUseSOAPAction(true);

call.setSOAPActionURI(Url);

String result = (String) call.invoke(new Object[] { xml });

return result;

} catch (Exception e) {

e.printStackTrace();

return e.getMessage();

}

}

}

调用:new FinanceClient().serviceClient(xml);

3,应用二 datasource配置:

value="oracle.jdbc.driver.OracleDriver">

value="jdbc:oracle:thin:@192.168.249.50:1521:orcl">

4,应用二 webserivice配置

@Component

@WebService(serviceName = "financeService", endpointInterface = "com.elis.finance.webService.IFinanceManager")

public class FinanceManager implements IFinanceManager {

@Autowired

private PropJournalServiceImpl propJournalServiceImpl;

@Autowired

private BisJournalFileDirectProcess bisJournalFileDirectProcess;

public String uploadVoucherToBis(String xml) {

//调用应用二的数据库

mapper.proCreateSumVoucher();

}

}

应用二的mapper调用:

@Repository

public class PropJournalMapper {

@Autowired

private SqlSessionTemplate sessionTemplate;

public List proCreateSumVoucher() {

return sessionTemplate.selectList("com.elis.finance.mapper.PropJournalMapper.proCreateSumVoucher);

}

说明:应用一是spring1.2+hibernate3,应用二是spring3x+myibatis,现在的情况是应用一,应用二单独使用没有任何问题(或者没有发现问题),当应用一使用webservice调用应用二的方法,一段时间后或者持续并发调用后,应用一出现线程池爆膨,其他功能无法连接到数据库(处于等待状态),webservice还是可以继续调用,使用正常,当在datasource配置上添加destory方法后,问题得到解决(或者伪解决),请帮忙看看问题所在

2013年4月26日 10:56

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值