0 Replies Latest reply on Jun 6, 2005 6:06 AM by 3004

    Can I modify WLI system Bean's transaction attribute --turn on archiver resulting endless exception in log file

    3004
      hi,erveryone,
      one difficult question need help.


      Environment: WLS8.1sp2 + WLI8.1sp2 + ORACLE9i + solaris9


      when I started archiver manually,just for a while, wli system generated about 40,000 JMS messages in
      wli.internal.worklist.timer.queue,and consume the great mass of system resource of Database server,I had to stop these
      archive processes immediately to keep other applicaitons which using the same database running normal. I did so by
      following steps:
      (1) in WLI console, delete wli.internal.worklist.timer.queue;
      (2) in WLI console, reconstruct wli.internal.worklist.timer.queue;
      (3) restart wli server.


      after server was restarted, wli server output endless and repeatly exception to log file ,the typical exception was:


      ####<May 8, 2005 3:08:26 PM CST> <Info> <EJB> <app01> <jcwliserver> <ExecuteThread: '54' for queue:
      'weblogic.kernel.Default'> <<anonymous>> <BEA1-54B26B551CC1A8856F80> <BEA-010049> <EJB Exception in method: remove:
      java.sql.SQLException: Transaction rolled back: Unknown reason.
      java.sql.SQLException: Transaction rolled back: Unknown reason
           at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1299)
           at weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1250)
           at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:385)
           at weblogic.jdbc.jta.DataSource.connect(DataSource.java:343)
           at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:305)
           at weblogic.ejb20.cmp.rdbms.RDBMSPersistenceManager.getConnection(RDBMSPersistenceManager.java:2247)
           at
      com.bea.wli.worklist.beans.entity.ListenerBean_1nsp14__WebLogic_CMP_RDBMS.__WL_loadGroup0(ListenerBean_1nsp14__WebLogic_CMP_R
      DBMS.java:1055)
           at
      com.bea.wli.worklist.beans.entity.ListenerBean_1nsp14__WebLogic_CMP_RDBMS.__WL_setTaskBean_listeners(ListenerBean_1nsp14__Web
      Logic_CMP_RDBMS.java:596)
           at
      com.bea.wli.worklist.beans.entity.ListenerBean_1nsp14__WebLogic_CMP_RDBMS.__WL_setTaskBean_listeners(ListenerBean_1nsp14__Web
      Logic_CMP_RDBMS.java:584)
           at
      com.bea.wli.worklist.beans.entity.ListenerBean_1nsp14__WebLogic_CMP_RDBMS.ejbRemove(ListenerBean_1nsp14__WebLogic_CMP_RDBMS.j
      ava:2423)
           at weblogic.ejb20.manager.DBManager.remove(DBManager.java:1318)
           at weblogic.ejb20.internal.EntityEJBLocalHome.remove(EntityEJBLocalHome.java:214)
           at
      com.bea.wli.worklist.beans.entity.ListenerBean_1nsp14_LocalHomeImpl.remove(ListenerBean_1nsp14_LocalHomeImpl.java:131)
           at
      com.bea.wli.worklist.beans.session.RemoteWorklistManagerBean.removeTaskListeners(RemoteWorklistManagerBean.java:3001)
           at
      com.bea.wli.worklist.beans.session.RemoteWorklistManagerBean_us8t1c_EOImpl.removeTaskListeners(RemoteWorklistManagerBean_us8t
      1c_EOImpl.java:698)
           at com.bea.wli.worklist.timer.WorklistTimerMDB.processListenerToRemove(WorklistTimerMDB.java:102)
           at com.bea.wli.worklist.timer.WorklistTimerMDB.onMessage(WorklistTimerMDB.java:61)
           at weblogic.ejb20.internal.MDListener.execute(MDListener.java:382)
           at weblogic.ejb20.internal.MDListener.transactionalOnMessage(MDListener.java:316)
           at weblogic.ejb20.internal.MDListener.onMessage(MDListener.java:281)
           at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:2596)
           at weblogic.jms.client.JMSSession.execute(JMSSession.java:2516)
           at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
           at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
      >
      ####<May 8, 2005 3:08:26 PM CST> <Info> <EJB> <app01> <jcwliserver> <ExecuteThread: '96' for queue:
      'weblogic.kernel.Default'> <<anonymous>> <BEA1-54B96B551CC1A8856F80> <BEA-010049> <EJB Exception in method: remove:
      javax.ejb.NoSuchEntityException: [EJB:010140]Bean with primary key: '153.22.52.28-17343c7.10243c3c6ec.a51' not found..
      javax.ejb.NoSuchEntityException: [EJB:010140]Bean with primary key: '153.22.52.28-17343c7.10243c3c6ec.a51' not found.
           at
      com.bea.wli.worklist.beans.entity.ListenerBean_1nsp14__WebLogic_CMP_RDBMS.__WL_loadGroup0(ListenerBean_1nsp14__WebLogic_CMP_R
      DBMS.java:1165)
           at
      com.bea.wli.worklist.beans.entity.ListenerBean_1nsp14__WebLogic_CMP_RDBMS.__WL_setTaskBean_listeners(ListenerBean_1nsp14__Web
      Logic_CMP_RDBMS.java:596)
           at
      com.bea.wli.worklist.beans.entity.ListenerBean_1nsp14__WebLogic_CMP_RDBMS.__WL_setTaskBean_listeners(ListenerBean_1nsp14__Web
      Logic_CMP_RDBMS.java:584)
           at
      com.bea.wli.worklist.beans.entity.ListenerBean_1nsp14__WebLogic_CMP_RDBMS.ejbRemove(ListenerBean_1nsp14__WebLogic_CMP_RDBMS.j
      ava:2423)
           at weblogic.ejb20.manager.DBManager.remove(DBManager.java:1318)
           at weblogic.ejb20.internal.EntityEJBLocalHome.remove(EntityEJBLocalHome.java:214)
           at
      com.bea.wli.worklist.beans.entity.ListenerBean_1nsp14_LocalHomeImpl.remove(ListenerBean_1nsp14_LocalHomeImpl.java:131)
           at
      com.bea.wli.worklist.beans.session.RemoteWorklistManagerBean.removeTaskListeners(RemoteWorklistManagerBean.java:3001)
           at
      com.bea.wli.worklist.beans.session.RemoteWorklistManagerBean_us8t1c_EOImpl.removeTaskListeners(RemoteWorklistManagerBean_us8t
      1c_EOImpl.java:698)
           at com.bea.wli.worklist.timer.WorklistTimerMDB.processListenerToRemove(WorklistTimerMDB.java:102)
           at com.bea.wli.worklist.timer.WorklistTimerMDB.onMessage(WorklistTimerMDB.java:61)
           at weblogic.ejb20.internal.MDListener.execute(MDListener.java:382)
           at weblogic.ejb20.internal.MDListener.transactionalOnMessage(MDListener.java:316)
           at weblogic.ejb20.internal.MDListener.onMessage(MDListener.java:281)
           at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:2596)
           at weblogic.jms.client.JMSSession.execute(JMSSession.java:2516)
           at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
           at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
      >
      ......


      The wli server generated log file very quickly ,:it can output 1M bytes log file per second,all logged information
      is similar to the <BEA-010049> excetpion metioned above. BEA support engineer suggested me to totally stop the
      archive ,I did so,but the server was still ouput the log file like crazy as before and the normal log information are
      completely override by <BEA-010049> excetpion.
      I checked the EntityEJBs in WLI console :Mywlidomain> Applications> WLI System EJBs> WLI Worklist Persistence$)A#,and
      found that in statistics table :

      ListenerBean : Pool miss ratio = 99.67%, transaction rollback ration = 99.90%,Destory Bean Ratio = 99.48%(see
      attachment)
      WorklistTimerMDB: transaction rollback ratio = 99.97%

      It seems ListenerBean worked incorrectly.I searched in support.bea.com and found one example which also about server
      output endless log file,the author solved this problem by changing Bean's transaction-attribute from 'Required'
      to 'RequiresNew' thought he didn't know why it works. I try this method by changing ListenerBean's
      transaction-attribute from 'Required' to 'RequiresNew'.


      $weblogic_home/integration/lib/wli-ejbs.ear/ejb-jar-generic.xml:
      ......
      <ejb-name>CommentBean</ejb-name>
      <method-name>*</method-name>
      </method>
      <trans-attribute>Required</trans-attribute>
      </container-transaction>
      <container-transaction>
      <method>
      <ejb-name>ListenerBean</ejb-name>
      <method-name>*</method-name>
      </method>
      <trans-attribute>RequiresNew</trans-attribute> -----------the default value is Required,I modified it to
      RequiresNew.
      </container-transaction>
      <container-transaction>
      ......


      really it works, the log file output resume normal. But there are still some problems:


      (1) this exception is still exist:
      javax.ejb.NoSuchEntityException: [EJB:010140]Bean with primary key: '153.22.52.28-17343c7.10243c3c6ec.a51' not found.


      (2) is this method safe ?(Does "Modify ListenBean's transaction-attribute" impat other parts of wli system?)


      (3) after changed the transaction attribute, if turn on archive again, the server output endless exception:

      ####<Jun 1, 2005 5:14:58 PM CST> <Info> <EJB> <app01> <jcwliserver> <ExecuteThread: '63' for queue:
      'weblogic.kernel.Default'> <<anonymous>> <BEA1-2F43890B86B0A8856F80> <BEA-010036> <Exception from ejbStore:
      java.sql.SQLException: XA error: XAER_RMERR : A resource manager error has occured in the transaction branch start()
      failed on resource 'weblogic.jdbc.jta.DataSource': XAER_RMERR : A resource manager error has occured in the transaction
      branch
      oracle.jdbc.xa.OracleXAException
           at oracle.jdbc.xa.OracleXAResource.checkError(OracleXAResource.java:1160)
           at oracle.jdbc.xa.client.OracleXAResource.start(OracleXAResource.java:311)
           at weblogic.jdbc.wrapper.VendorXAResource.start(VendorXAResource.java:50)
           at weblogic.jdbc.jta.DataSource.start(DataSource.java:617)
           at weblogic.transaction.internal.XAServerResourceInfo.start(XAServerResourceInfo.java:1075)
           at weblogic.transaction.internal.XAServerResourceInfo.xaStart(XAServerResourceInfo.java:1007)
           at weblogic.transaction.internal.XAServerResourceInfo.enlist(XAServerResourceInfo.java:218)
           at weblogic.transaction.internal.ServerTransactionImpl.enlistResource(ServerTransactionImpl.java:419)
           at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1287)
           at weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1250)
           at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:385)
           at weblogic.jdbc.jta.DataSource.connect(DataSource.java:343)
           at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:305)
           at weblogic.ejb20.cmp.rdbms.RDBMSPersistenceManager.getConnection(RDBMSPersistenceManager.java:2247)
           at
      com.bea.wli.worklist.beans.entity.TaskBean_9fxazu__WebLogic_CMP_RDBMS.__WL_store(TaskBean_9fxazu__WebLogic_CMP_RDBMS.java:363
      6)
           at
      com.bea.wli.worklist.beans.entity.TaskBean_9fxazu__WebLogic_CMP_RDBMS.ejbStore(TaskBean_9fxazu__WebLogic_CMP_RDBMS.java:3548)
           at weblogic.ejb20.manager.DBManager.beforeCompletion(DBManager.java:927)
           at weblogic.ejb20.internal.TxManager$TxListener.beforeCompletion(TxManager.java:745)
           at weblogic.transaction.internal.ServerSCInfo.callBeforeCompletions(ServerSCInfo.java:1010)
           at weblogic.transaction.internal.ServerSCInfo.startPrePrepareAndChain(ServerSCInfo.java:115)
           at weblogic.transaction.internal.ServerTransactionImpl.localPrePrepareAndChain(ServerTransactionImpl.java:1142)
           at weblogic.transaction.internal.ServerTransactionImpl.globalPrePrepare(ServerTransactionImpl.java:1868)
           at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:250)
           at weblogic.transaction.internal.ServerTransactionImpl.commit(ServerTransactionImpl.java:221)
           at weblogic.ejb20.internal.MDListener.execute(MDListener.java:412)
           at weblogic.ejb20.internal.MDListener.transactionalOnMessage(MDListener.java:316)
           at weblogic.ejb20.internal.MDListener.onMessage(MDListener.java:281)
           at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:2596)
           at weblogic.jms.client.JMSSession.execute(JMSSession.java:2516)
           at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
           at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
      ..
      java.sql.SQLException: XA error: XAER_RMERR : A resource manager error has occured in the transaction branch start()
      failed on resource 'weblogic.jdbc.jta.DataSource': XAER_RMERR : A resource manager error has occured in the transaction
      branch
      oracle.jdbc.xa.OracleXAException
           at oracle.jdbc.xa.OracleXAResource.checkError(OracleXAResource.java:1160)
           at oracle.jdbc.xa.client.OracleXAResource.start(OracleXAResource.java:311)
           at weblogic.jdbc.wrapper.VendorXAResource.start(VendorXAResource.java:50)
           at weblogic.jdbc.jta.DataSource.start(DataSource.java:617)
           at weblogic.transaction.internal.XAServerResourceInfo.start(XAServerResourceInfo.java:1075)
           at weblogic.transaction.internal.XAServerResourceInfo.xaStart(XAServerResourceInfo.java:1007)
           at weblogic.transaction.internal.XAServerResourceInfo.enlist(XAServerResourceInfo.java:218)
           at weblogic.transaction.internal.ServerTransactionImpl.enlistResource(ServerTransactionImpl.java:419)
           at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1287)
           at weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1250)
           at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:385)
           at weblogic.jdbc.jta.DataSource.connect(DataSource.java:343)
           at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:305)
           at weblogic.ejb20.cmp.rdbms.RDBMSPersistenceManager.getConnection(RDBMSPersistenceManager.java:2247)
           at
      com.bea.wli.worklist.beans.entity.TaskBean_9fxazu__WebLogic_CMP_RDBMS.__WL_store(TaskBean_9fxazu__WebLogic_CMP_RDBMS.java:363
      6)
           at
      com.bea.wli.worklist.beans.entity.TaskBean_9fxazu__WebLogic_CMP_RDBMS.ejbStore(TaskBean_9fxazu__WebLogic_CMP_RDBMS.java:3548)
           at weblogic.ejb20.manager.DBManager.beforeCompletion(DBManager.java:927)
           at weblogic.ejb20.internal.TxManager$TxListener.beforeCompletion(TxManager.java:745)
           at weblogic.transaction.internal.ServerSCInfo.callBeforeCompletions(ServerSCInfo.java:1010)
           at weblogic.transaction.internal.ServerSCInfo.startPrePrepareAndChain(ServerSCInfo.java:115)
           at weblogic.transaction.internal.ServerTransactionImpl.localPrePrepareAndChain(ServerTransactionImpl.java:1142)
           at weblogic.transaction.internal.ServerTransactionImpl.globalPrePrepare(ServerTransactionImpl.java:1868)
           at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:250)
           at weblogic.transaction.internal.ServerTransactionImpl.commit(ServerTransactionImpl.java:221)
           at weblogic.ejb20.internal.MDListener.execute(MDListener.java:412)
           at weblogic.ejb20.internal.MDListener.transactionalOnMessage(MDListener.java:316)
           at weblogic.ejb20.internal.MDListener.onMessage(MDListener.java:281)
           at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:2596)
           at weblogic.jms.client.JMSSession.execute(JMSSession.java:2516)
           at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
           at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)


           at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1292)
           at weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1250)
           at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:385)
           at weblogic.jdbc.jta.DataSource.connect(DataSource.java:343)
           at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:305)
           at weblogic.ejb20.cmp.rdbms.RDBMSPersistenceManager.getConnection(RDBMSPersistenceManager.java:2247)
           at
      com.bea.wli.worklist.beans.entity.TaskBean_9fxazu__WebLogic_CMP_RDBMS.__WL_store(TaskBean_9fxazu__WebLogic_CMP_RDBMS.java:363
      6)
           at
      com.bea.wli.worklist.beans.entity.TaskBean_9fxazu__WebLogic_CMP_RDBMS.ejbStore(TaskBean_9fxazu__WebLogic_CMP_RDBMS.java:3548)
           at weblogic.ejb20.manager.DBManager.beforeCompletion(DBManager.java:927)
           at weblogic.ejb20.internal.TxManager$TxListener.beforeCompletion(TxManager.java:745)
           at weblogic.transaction.internal.ServerSCInfo.callBeforeCompletions(ServerSCInfo.java:1010)
           at weblogic.transaction.internal.ServerSCInfo.startPrePrepareAndChain(ServerSCInfo.java:115)
           at weblogic.transaction.internal.ServerTransactionImpl.localPrePrepareAndChain(ServerTransactionImpl.java:1142)
           at weblogic.transaction.internal.ServerTransactionImpl.globalPrePrepare(ServerTransactionImpl.java:1868)
           at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:250)
           at weblogic.transaction.internal.ServerTransactionImpl.commit(ServerTransactionImpl.java:221)
           at weblogic.ejb20.internal.MDListener.execute(MDListener.java:412)
           at weblogic.ejb20.internal.MDListener.transactionalOnMessage(MDListener.java:316)
           at weblogic.ejb20.internal.MDListener.onMessage(MDListener.java:281)
           at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:2596)
           at weblogic.jms.client.JMSSession.execute(JMSSession.java:2516)
           at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
           at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
      >




      How can I solve these problem ? any suggestion is warm welcome.


      Thanks in advance.


      Great Lou