2013-06-24 90 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

相關問題