3 Replies Latest reply on Jan 9, 2002 3:35 AM by lasmith

    Oracle falling asleep!

    lasmith

      We are having trouble with Jboss 2.4.3 and the oracle thin client. Everything seems to work fine in normal operation. The problem is when there is a period of inactivity. Every morning when I come in (I'm the first in!) and I hit the site I get the following exception thrown:

      [User] XAException: tx=XidImpl [FormatId=257, GlobalId=uksc-nt11//265, BranchQual=] errorCode=XA_UNKNOWN(0)
      [User] javax.transaction.xa.XAException: Rollback failed: Io exception: Connection aborted by peer: socket write error
      [User] at org.jboss.pool.jdbc.xa.wrapper.XAResourceImpl.rollback(XAResourceImpl.java:219)
      [User] at org.jboss.tm.TxCapsule.rollbackResources(TxCapsule.java:1539)
      [User] at org.jboss.tm.TxCapsule.rollback(TxCapsule.java:394)
      [User] at org.jboss.tm.TransactionImpl.rollback(TransactionImpl.java:88)
      [User] at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:352)
      [User] at org.jboss.ejb.plugins.TxInterceptorCMT.invokeHome(TxInterceptorCMT.java:86)
      [User] at org.jboss.ejb.plugins.SecurityInterceptor.invokeHome(SecurityInterceptor.java:103)
      [User] at org.jboss.ejb.plugins.LogInterceptor.invokeHome(LogInterceptor.java:106)
      [User] at org.jboss.ejb.EntityContainer.invokeHome(EntityContainer.java:420)
      [User] at org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invokeHome(JRMPContainerInvoker.java:441)
      [User] at org.jboss.ejb.plugins.jrmp.interfaces.HomeProxy.invokeHome(HomeProxy.java:237)
      [User] at org.jboss.ejb.plugins.jrmp.interfaces.HomeProxy.invoke(HomeProxy.java:182)
      [User] at $Proxy114.findByUserName(Unknown Source)
      [User] at com.msxi.fcg.session.UserServiceBean.validate(UserServiceBean.java:45)
      [User] at java.lang.reflect.Method.invoke(Native Method)
      [User] at org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.java:543)
      [User] at org.jboss.ejb.plugins.TxInterceptorBMT.invoke(TxInterceptorBMT.java:276)
      [User] at org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceInterceptor.java:87)
      [User] at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:128)
      [User] at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:195)
      [User] at org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSessionContainer.java:286)
      [User] at org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invoke(JRMPContainerInvoker.java:395)
      [User] at java.lang.reflect.Method.invoke(Native Method)
      [User] at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
      [User] at sun.rmi.transport.Transport$1.run(Unknown Source)
      [User] at java.security.AccessController.doPrivileged(Native Method)
      [User] at sun.rmi.transport.Transport.serviceCall(Unknown Source)
      [User] at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
      [User] at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
      [User] at java.lang.Thread.run(Unknown Source)
      [User] TRANSACTION ROLLBACK EXCEPTION:null
      Embedded Exception
      No more data to read from socket; nested exception is:
      javax.ejb.EJBException: null
      Embedded Exception
      No more data to read from socket
      [User] com.objectmatter.bsf.BODBException: No more data to read from socket
      [User] at com.objectmatter.bsf.BODBProcessor.$fc(com/objectmatter/bsf/BODBProcessor)
      [User] at com.objectmatter.bsf.BODBProcessor.selectRows(com/objectmatter/bsf/BODBProcessor)
      [User] at com.objectmatter.bsf.BOPrimaryCollection.$6c(com/objectmatter/bsf/BOPrimaryCollection)
      [User] at com.objectmatter.bsf.BOPrimaryCollection.get(com/objectmatter/bsf/BOPrimaryCollection)
      [User] at com.objectmatter.bsf.Database.get(com/objectmatter/bsf/Database)
      [User] at com.objectmatter.bsf.OQuery.execute(com/objectmatter/bsf/OQuery)
      [User] at com.msxi.fcg.entity.UserBean.ejbFindByUserName(UserBean.java:350)
      [User] at java.lang.reflect.Method.invoke(Native Method)
      [User] at org.jboss.ejb.plugins.BMPPersistenceManager.callFinderMethod(BMPPersistenceManager.java:474)
      [User] at org.jboss.ejb.plugins.BMPPersistenceManager.findEntity(BMPPersistenceManager.java:227)
      [User] at org.jboss.ejb.EntityContainer.find(EntityContainer.java:594)
      [User] at java.lang.reflect.Method.invoke(Native Method)
      [User] at org.jboss.ejb.EntityContainer$ContainerInterceptor.invokeHome(EntityContainer.java:843)
      [User] at org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invokeHome(EntitySynchronizationInterceptor.java:231)
      [User] at org.jboss.ejb.plugins.EntityInstanceInterceptor.invokeHome(EntityInstanceInterceptor.java:154)
      [User] at org.jboss.ejb.plugins.EntityLockInterceptor.invokeHome(EntityLockInterceptor.java:108)
      [User] at org.jboss.ejb.plugins.TxInterceptorCMT.invokeNext(TxInterceptorCMT.java:135)
      [User] at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:307)
      [User] at org.jboss.ejb.plugins.TxInterceptorCMT.invokeHome(TxInterceptorCMT.java:86)
      [User] at org.jboss.ejb.plugins.SecurityInterceptor.invokeHome(SecurityInterceptor.java:103)
      [User] at org.jboss.ejb.plugins.LogInterceptor.invokeHome(LogInterceptor.java:106)
      [User] at org.jboss.ejb.EntityContainer.invokeHome(EntityContainer.java:420)
      [User] at org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invokeHome(JRMPContainerInvoker.java:441)
      [User] at org.jboss.ejb.plugins.jrmp.interfaces.HomeProxy.invokeHome(HomeProxy.java:237)
      [User] at org.jboss.ejb.plugins.jrmp.interfaces.HomeProxy.invoke(HomeProxy.java:182)
      [User] at $Proxy114.findByUserName(Unknown Source)
      [User] at com.msxi.fcg.session.UserServiceBean.validate(UserServiceBean.java:45)
      [User] at java.lang.reflect.Method.invoke(Native Method)
      [User] at org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.java:543)
      [User] at org.jboss.ejb.plugins.TxInterceptorBMT.invoke(TxInterceptorBMT.java:276)
      [User] at org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceInterceptor.java:87)
      [User] at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:128)
      [User] at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:195)
      [User] at org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSessionContainer.java:286)
      [User] at org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invoke(JRMPContainerInvoker.java:395)
      [User] at java.lang.reflect.Method.invoke(Native Method)
      [User] at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
      [User] at sun.rmi.transport.Transport$1.run(Unknown Source)
      [User] at java.security.AccessController.doPrivileged(Native Method)
      [User] at sun.rmi.transport.Transport.serviceCall(Unknown Source)
      [User] at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
      [User] at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
      [User] at java.lang.Thread.run(Unknown Source)
      [Default] javax.transaction.TransactionRolledbackException: null
      Embedded Exception
      No more data to read from socket; nested exception is:
      javax.ejb.EJBException: null
      Embedded Exception
      No more data to read from socket
      [Default] javax.ejb.EJBException: null
      Embedded Exception
      No more data to read from socket
      [Default] at org.jboss.ejb.plugins.BMPPersistenceManager.callFinderMethod(BMPPersistenceManager.java:500)
      etc......

      It's quite a long stack trace and I've omitted the rest. This happens every morning. On the next hit JBoss works fine. This leads me to believe it is something to do with the connection pool. In jboss.jcml this is set to a minimum size > 0 so it should always have a connection available.

      I've searched the jboss forums but to no avail. I'd apperciate any help.

      The only other point to note is that we use VBSF as an intermediate layer between the BMP EJB's and the database. Though I don't think this has anything to do with it since JBoss manages the connection pool.

      Laurence Smith

        • 1. Re: Oracle falling asleep!
          lasmith

          I think I may have solved this myself! I think the problem is that all the development databases at our site go down for backups every night (which I didn't know). I think this is the problem since the connection pool is be released.

          Does anybody know if there is a way JBoss can handle the loss of a connection pool without a reboot?

          • 2. Re: Oracle falling asleep!
            davidjencks

            This is from memory, so you might need to look for one of the posts from when I had tested it recently, and you will need to translate it back to 2.4 format.

            idletimeoutenabled=true
            idletimeoutmillis=600000
            GCEnabled=true
            GCInterval=600000

            I think thats all. The "GC" will run every 10 min, and remove connections that have been idle at least 10 min.

            • 3. Re: Oracle falling asleep!
              lasmith

              That worked it was the GCEnabled setting, I had it set to false.

              Thanks.