2013-06-24 40 views
0

我使用与C3P0(V 0.9.2.1)&休眠(3.2.6ga)的Websphere挂起由于C3P0

使用的Websphere挂着的几个小时后,沿7.1和我在日志中看到此消息

[6/24/13 10:57:50:377 CEST] 00000031 ThreadMonitor W WSVR0605W: Thread "WebContainer : 24" (00000048) has been active for 759356 milliseconds and may be hung. There is/are 45 thread(s) in total in the server that may be hung. 
    at java.lang.Object.wait(Native Method) 
    at java.lang.Object.wait(Object.java:196) 
    at com.mchange.v2.resourcepool.BasicResourcePool.awaitAcquire(BasicResourcePool.java:776) 
    at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:198) 
    at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:170) 
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:172) 
    at com.mchange.v2.c3p0.PoolBackedDataSource.getConnection(PoolBackedDataSource.java:58) 
    at org.hibernate.connection.C3P0ConnectionProvider.getConnection(C3P0ConnectionProvider.java:56) 
    at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423) 
    at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144) 
    at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:119) 
    at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:57) 
    at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1326) 
    at com.aaa.in.bbb.effort.daoImpl.GRDAO.getGroupList(GRDAO.java:60) 
    at com.aaa.in.bbb.effort.delegate.GRBean.getGroupList(GRBean.java:40) 
    at com.aaa.in.bbb.effort.action.GRAction.execute(GRAction.java:74) 
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419) 
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224) 
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194) 
    at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:718) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:831) 
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1658) 
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:940) 
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:503) 
    at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:181) 
    at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3954) 
    at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:276) 
    at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:942) 
    at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1592) 
    at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:186) 
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:453) 
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:515) 
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:306) 
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:277) 
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214) 
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113) 
    at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165) 
    at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) 
    at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) 
    at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138) 
    at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204) 
    at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775) 
    at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905) 
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1646) 

我不知道为什么会议没有关闭。下面是会话代码

public class HibernateUtil { 
    private static final SessionFactory sessionFactory; 
    static { 
     try { 
      Context ctx = new InitialContext(); 
      Object obj = ctx.lookup("HibernateSessionFactory");   
      sessionFactory = (SessionFactory) obj; 
     } catch (Throwable ex) { 

      System.out.println("Initial SessionFactory creation failed: " 
        + ex.getMessage()); 
      throw new ExceptionInInitializerError(ex); 
     } 
    } 

    public static final ThreadLocal hibernateSession = new ThreadLocal(); 

    public static Session currentSession() { 
     Session s = (Session) sessionFactory.openSession();  
     hibernateSession.set(s); 
     return s; 
    } 
    public static void closeSession() { 
     Session s = (Session) hibernateSession.get(); 
     try { 
      if(s != null) 
      { 
       hibernateSession.set(null); 
       s.close(); 
       System.out.println("s!=null");    
      } 
     } catch (HibernateException e) {    
      e.printStackTrace(); 
      System.out.println("Error occured in closesession()"); 
     } 
     finally 
     { 
      s=null; 
     } 

    } 
    public static void closeSession(Session session) { 
     try { 
      if(session != null) 
      { 
       session.flush(); 
       hibernateSession.set(null); 
       session.close(); 
       session=null; 

      } 
     } catch (HibernateException e) {    
      e.printStackTrace(); 
      System.out.println("Error occured in closesession(session)"); 

     } 
    } 
} 

我检查代码并关闭会话请求是有,但不知何故会议本身没有被C3P0

公布的问题发生后,才引入了连接池。我不得不介绍连接池的原因是为了解决Oracle 11中达到的最大游标错误(请参阅Max cursors reached error in JSP + Hibernate

有没有人遇到过这种错误?任何指针?

回答

1

池正在等待连接。如果他们永远不会来,那么由于连接泄漏,您可能已经用尽了它。

请使用c3p0配置参数unreturnedConnectionTimeoutdebugUnreturnedConnectionStackTraces调试泄漏。请参阅here的讨论。

+0

我在hibernate.cfg.xml中设置了这2个设置。我在应用程序中将日志级别设置为“INFO”,但我没有看到任何消息n Log。 – KK99

+0

当池初始化时,你看到消息,它的配置转储? –

+0

当我启动应用程序'0000001e SystemErr R Initializing c3p0 pool ... [email protected] [connectionPoolDataSource - > [email protected] [acquireIncrement - > 1,autoCommitOnClose - > false,connectionTesterClassName - > com.mchange.v2.c3p0.impl.DefaultConnectionTester,factoryClassLocation - > null,forceIgnoreUnresolvedTransactions - > false,idleConnectionTestPeriod - > 300,initialPoolSize - > 2,maxIdleTime - > 350,maxPoolSize - > false, 40,maxStatements - > 0,minPoolSize - > 2,nestedDataSource - >' – KK99

相关问题