WAS服务器应用程序挂起时将c3p0属性添加到休眠

时间:2016-06-04 04:35:16

标签: hibernate connection-pooling c3p0

  

[5/31/16 0:03:07:504 IST] 00000036 ThreadMonitor W WSVR0605W:线程   " WebContainer:7" (00000032)已激活615004毫秒   并且可能会被挂起服务器中总共有1个线程   可能会挂。在java.lang.Object.wait(Native Method)at   java.lang.Object.wait(Object.java:196)at   com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1414)     在   com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource(BasicResourcePool.java:606)     在   com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:526)     在   com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutAndMarkConnectionInUse(C3P0PooledConnectionPool.java:755)     在   com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:682)     在   com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:140)     在   org.hibernate.connection.C3P0ConnectionProvider.getConnection(C3P0ConnectionProvider.java:56)     在   org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423)     在   org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)     在   org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:139)     在   org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1547)     在org.hibernate.loader.Loader.doQuery(Loader.java:673)at   org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)     在org.hibernate.loader.Loader.loadEntity(Loader.java:1860)at   org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:48)     在   org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:42)     在   org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3044)     在   org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:395)     在   org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:375)     在   org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:139)     在   org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:195)     在   org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:103)     在org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:878)at   org.hibernate.impl.SessionImpl.get(SessionImpl.java:815)at   org.hibernate.impl.SessionImpl.get(SessionImpl.java:808)at   com.nexstep.travel.administrator.perdiemdomestic.dao.PerDiemDomesticMstDAO.validateTravelSettleAmtWithPerDiem(PerDiemDomesticMstDAO.java:727)     在   com.nexstep.travel.administrator.perdiemdomestic.service.PerDiemDomesticMasterBLOServiceImp.validateTravelSettleAmtWithPerDiem(PerDiemDomesticMasterBLOServiceImp.java:521)     在   com.nexstep.travel.administrator.perdiemdomestic.service.PerDiemDomesticMasterServiceImp.validateTravelSettleAmtWithPerDiem(PerDiemDomesticMasterServiceImp.java:261)     在   com.nexstep.framework.budgeting.ajaxutility.AjaxBudgetingUtility.validateTSAmtWithPerDiem(AjaxBudgetingUtility.java:5610)     在sun.reflect.GeneratedMethodAccessor1553.invoke(未知来源)at   sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)     在java.lang.reflect.Method.invoke(Method.java:599)at   org.directwebremoting.impl.ExecuteAjaxFilter.doFilter(ExecuteAjaxFilter.java:34)     在   org.directwebremoting.impl.DefaultRemoter $ 1.doFilter(DefaultRemoter.java:428)     在   org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:431)     在   org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:283)     在   org.directwebremoting.servlet.PlainCallHandler.handle(PlainCallHandler.java:52)     在   org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:101)     在   org.directwebremoting.servlet.DwrServlet.doPost(DwrServlet.java:146)     在javax.servlet.http.HttpServlet.service(HttpServlet.java:738)at   javax.servlet.http.HttpServlet.service(HttpServlet.java:831)at at   com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1443)     在   com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:790)     在   com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:443)     在   com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:175)     在   com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:91)     在   com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:859)     在   com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1557)     在   com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:173)     在   com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:455)     在   com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:384)     在   com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:272)     在   com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)     在   com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)     在   com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)     在   com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)     在   com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)     在com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)at at   com.ibm.io.async.ResultHandler.complete(ResultHandler.java:202)at at   com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:766)     在com.ibm.io.async.ResultHandler $ 2.run(ResultHandler.java:896)at   com.ibm.ws.util.ThreadPool $ Worker.run(ThreadPool.java:1527)

当我们向hibernate.cfg.xml添加c3p0属性时,我们得到了上述异常,当我们尝试注释c3p0相关属性时,应用程序运行正常。

我们在休眠中添加的属性如下:

    <property name="hibernate.bytecode.use_reflection_optimizer">false</property>
    <property name="hibernate.connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property>
    <property name="hibernate.connection.password">ADMIN</property>
    <property name="hibernate.connection.url">jdbc:jtds:sqlserver://localhost/TEST</property>
    <property name="hibernate.connection.username">ADMIN</property>
    <property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
    <property name="hibernate.search.autoregister_listeners">false</property>
    <property name="c3p0.min_size">1</property>
    <property name="c3p0.max_size">100</property>
    <property name="c3p0.timeout">3600</property>
    <property name="c3p0.max_statements">50</property>
    <property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>

任何人都可以告诉我们在这里导致连接泄漏的原因是什么,此外,应用程序仅在我们测试区域的生产中挂起,上述属性运行良好。

请建议我们如何解决此问题。

0 个答案:

没有答案