5 Replies Latest reply on Dec 19, 2006 12:20 PM by manik

    UnsupportedOperationException with WAS 6.0, CMT , Hibernate

    lakida

      Environment:
      Hibernate 3.1 , Websphere 6.0, Jbosscache 1.3.0SP4, Jbosscache 1.4.0GA

      I have enabled Jboss cache as second level cache for Hibernate. Currently it is in a non-clustered and replicated environment. The application uses EJBs and I have a session bean method which participates in a container managed transaction and invokes the hibernate DAO to fetch data. I get the exception below on invoking the method from a EJB client.

      It appears to me that the configurations are all in place but am thwarted by this excepiton which does not let me progress further. This exception appears in both versions of 1.3.0SP4 and 1.4.0SP1.

      Excerpt from hibernate.cfg.xml are as follows :

      <property name="hibernate.transaction.factory_class">org.hibernate.transaction.CMTTransactionFactory</property>
      <property name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.WebSphereExtendedJTATransactionLookup</property>
      <property name="hibernate.current_session_context_class">jta</property>
      <property name="hibernate.transaction.flush_before_completion">true</property>
      <property name="hibernate.transaction.auto_close_session">true</property>
      <property name="hibernate.cache.use_second_level_cache">true</property>
      <property name="hibernate.cache.provider_class">org.hibernate.cache.TreeCacheProvider</property>
      

      relevant section from treecache.xml
      ---
      <attribute name="TransactionManagerLookupClass">org.jboss.cache.GenericTransactionManagerLookup</attribute>
       <attribute name="IsolationLevel">REPEATABLE_READ</attribute>
       <attribute name="CacheMode">LOCAL</attribute>
      ---
      

      Stack trace :
      [12/14/06 16:14:42:247 IST] 0000002d ExceptionUtil E CNTR0020E: EJB threw an unexpected (non-declared) exception during invocation of method "getValidValuesWithCMT" on bean "BeanId(HibernateCacheProjectEAR#HibernateCacheProject.jar#ValidValueSessionBean, null)". Exception data: java.lang.UnsupportedOperationException
      at org.hibernate.transaction.WebSphereExtendedJTATransactionLookup$TransactionManagerAdapter.suspend(WebSphereExtendedJTATransactionLookup.java:105)
      at org.hibernate.cache.TreeCache.suspend(TreeCache.java:101)
      at org.hibernate.cache.TreeCache.put(TreeCache.java:71)
      at org.hibernate.cache.TransactionalCache.put(TransactionalCache.java:50)
      at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:156)
      at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:842)
      at org.hibernate.loader.Loader.doQuery(Loader.java:717)
      at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
      at org.hibernate.loader.Loader.doList(Loader.java:2145)
      at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029)
      at org.hibernate.loader.Loader.list(Loader.java:2024)
      at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:94)
      at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1533)
      at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
      at com.acs.enterprise.common.program.dataaccess.dao.impl.ValidValueDAOImpl.getValidValueDomainDetail(ValidValueDAOImpl.java:170)
      at ejbs.ValidValueSessionBeanBean.getValidValuesWithCMT(ValidValueSessionBeanBean.java:69)
      at ejbs.EJSRemoteStatelessValidValueSessionBean_96e1942d.getValidValuesWithCMT(EJSRemoteStatelessValidValueSessionBean_96e1942d.java:79)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:85)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:58)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled Code))
      at java.lang.reflect.Method.invoke(Method.java(Compiled Code))
      at com.ibm.rmi.util.ProxyUtil$4.run(ProxyUtil.java:727)
      at java.security.AccessController.doPrivileged1(Native Method)
      at java.security.AccessController.doPrivileged(AccessController.java:351)
      at com.ibm.rmi.util.ProxyUtil.invokeWithClassLoaders(ProxyUtil.java:725)
      at com.ibm.CORBA.iiop.ClientDelegate.invoke(ClientDelegate.java:1121)
      at $Proxy2.getValidValuesWithCMT(Unknown Source)
      at ejbs._ValidValueSessionBean_Stub.getValidValuesWithCMT(_ValidValueSessionBean_Stub.java:302)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:85)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:58)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled Code))
      at java.lang.reflect.Method.invoke(Method.java(Compiled Code))
      at com.ibm.etools.utc.model.ReflectionMethodModel.invoke(ReflectionMethodModel.java:65)
      at com.ibm.etools.utc.servlet.InvokeServlet.invoke(InvokeServlet.java:111)
      at com.ibm.etools.utc.servlet.InvokeServlet.doPost(InvokeServlet.java:370)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
      at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1212)
      at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:629)
      at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:80)
      at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1657)
      at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:77)
      at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:421)
      at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:367)
      at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:94)
      at com.ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java:548)
      at com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java:601)
      at com.ibm.ws.tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java:934)
      at com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java:1021)
      at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1332)
      
      [12/14/06 16:14:42:325 IST] 0000002d OrderedSynchr E failed calling afterCompletion() on TxInterceptor.LocalSynchronizationHandler(gtx=GlobalTransaction:<null>:1, tx=org.hibernate.transaction.WebSphereExtendedJTATransactionLookup$TransactionManagerAdapter$TransactionAdapter@0)
      [12/14/06 16:14:42:325 IST] 0000002d OrderedSynchr E TRAS0014I: The following exception was logged java.lang.IllegalStateException: illegal status: 5
      at org.jboss.cache.interceptors.TxInterceptor$RemoteSynchronizationHandler.afterCompletion(TxInterceptor.java:1019)
      at org.jboss.cache.interceptors.TxInterceptor$LocalSynchronizationHandler.afterCompletion(TxInterceptor.java:1103)
      at org.jboss.cache.interceptors.OrderedSynchronizationHandler.afterCompletion(OrderedSynchronizationHandler.java:83)
      at org.hibernate.transaction.WebSphereExtendedJTATransactionLookup$1.invoke(WebSphereExtendedJTATransactionLookup.java:133)
      at $Proxy3.afterCompletion(Unknown Source)
      at com.ibm.ws.jtaextensions.SynchronizationCallbackWrapper.afterCompletion(SynchronizationCallbackWrapper.java:74)
      at com.ibm.ws.Transaction.JTA.RegisteredSyncs.distributeAfter(RegisteredSyncs.java:358)
      at com.ibm.ws.Transaction.JTA.TransactionImpl.distributeAfter(TransactionImpl.java:3268)
      at com.ibm.ws.Transaction.JTA.TransactionImpl.postCompletion(TransactionImpl.java:3312)
      at com.ibm.ws.Transaction.JTA.TransactionImpl.internalRollback(TransactionImpl.java:2368)
      at com.ibm.ws.Transaction.JTA.TransactionImpl.rollback(TransactionImpl.java:1698)
      at com.ibm.ws.Transaction.JTA.TranManagerImpl.rollback(TranManagerImpl.java:274)
      at com.ibm.ws.Transaction.JTA.TranManagerSet.rollback(TranManagerSet.java:181)
      at com.ibm.ejs.csi.TranStrategy.rollback(TranStrategy.java:911)
      at com.ibm.ejs.csi.TranStrategy.handleException(TranStrategy.java:220)
      at com.ibm.ejs.csi.TransactionControlImpl.postInvoke(TransactionControlImpl.java:566)
      at com.ibm.ejs.container.EJSContainer.postInvoke(EJSContainer.java:3798)
      at com.ibm.ejs.container.EJSContainer.postInvoke(EJSContainer.java:3620)
      at ejbs.EJSRemoteStatelessValidValueSessionBean_96e1942d.getValidValuesWithCMT(EJSRemoteStatelessValidValueSessionBean_96e1942d.java:98)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:85)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:58)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled Code))
      at java.lang.reflect.Method.invoke(Method.java(Compiled Code))
      at com.ibm.rmi.util.ProxyUtil$4.run(ProxyUtil.java:727)
      at java.security.AccessController.doPrivileged1(Native Method)
      at java.security.AccessController.doPrivileged(AccessController.java:351)
      at com.ibm.rmi.util.ProxyUtil.invokeWithClassLoaders(ProxyUtil.java:725)
      at com.ibm.CORBA.iiop.ClientDelegate.invoke(ClientDelegate.java:1121)
      at $Proxy2.getValidValuesWithCMT(Unknown Source)
      at ejbs._ValidValueSessionBean_Stub.getValidValuesWithCMT(_ValidValueSessionBean_Stub.java:302)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:85)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:58)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled Code))
      at java.lang.reflect.Method.invoke(Method.java(Compiled Code))
      at com.ibm.etools.utc.model.ReflectionMethodModel.invoke(ReflectionMethodModel.java:65)
      at com.ibm.etools.utc.servlet.InvokeServlet.invoke(InvokeServlet.java:111)
      at com.ibm.etools.utc.servlet.InvokeServlet.doPost(InvokeServlet.java:370)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
      at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1212)
      at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:629)
      at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:80)
      at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1657)
      at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:77)
      at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:421)
      at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:367)
      at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:94)
      at com.ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java:548)
      at com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java:601)
      at com.ibm.ws.tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java:934)
      at com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java:1021)
      at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1332)
      .
       java.lang.IllegalStateException: illegal status: 5
      at org.jboss.cache.interceptors.TxInterceptor$RemoteSynchronizationHandler.afterCompletion(TxInterceptor.java:1019)
      at org.jboss.cache.interceptors.TxInterceptor$LocalSynchronizationHandler.afterCompletion(TxInterceptor.java:1103)
      at org.jboss.cache.interceptors.OrderedSynchronizationHandler.afterCompletion(OrderedSynchronizationHandler.java:83)
      at org.hibernate.transaction.WebSphereExtendedJTATransactionLookup$1.invoke(WebSphereExtendedJTATransactionLookup.java:133)
      at $Proxy3.afterCompletion(Unknown Source)
      at com.ibm.ws.jtaextensions.SynchronizationCallbackWrapper.afterCompletion(SynchronizationCallbackWrapper.java:74)
      at com.ibm.ws.Transaction.JTA.RegisteredSyncs.distributeAfter(RegisteredSyncs.java:358)
      at com.ibm.ws.Transaction.JTA.TransactionImpl.distributeAfter(TransactionImpl.java:3268)
      at com.ibm.ws.Transaction.JTA.TransactionImpl.postCompletion(TransactionImpl.java:3312)
      at com.ibm.ws.Transaction.JTA.TransactionImpl.internalRollback(TransactionImpl.java:2368)
      at com.ibm.ws.Transaction.JTA.TransactionImpl.rollback(TransactionImpl.java:1698)
      at com.ibm.ws.Transaction.JTA.TranManagerImpl.rollback(TranManagerImpl.java:274)
      at com.ibm.ws.Transaction.JTA.TranManagerSet.rollback(TranManagerSet.java:181)
      at com.ibm.ejs.csi.TranStrategy.rollback(TranStrategy.java:911)
      at com.ibm.ejs.csi.TranStrategy.handleException(TranStrategy.java:220)
      at com.ibm.ejs.csi.TransactionControlImpl.postInvoke(TransactionControlImpl.java:566)
      at com.ibm.ejs.container.EJSContainer.postInvoke(EJSContainer.java:3798)
      at com.ibm.ejs.container.EJSContainer.postInvoke(EJSContainer.java:3620)
      at ejbs.EJSRemoteStatelessValidValueSessionBean_96e1942d.getValidValuesWithCMT(EJSRemoteStatelessValidValueSessionBean_96e1942d.java:98)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:85)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:58)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled Code))
      at java.lang.reflect.Method.invoke(Method.java(Compiled Code))
      at com.ibm.rmi.util.ProxyUtil$4.run(ProxyUtil.java:727)
      at java.security.AccessController.doPrivileged1(Native Method)
      at java.security.AccessController.doPrivileged(AccessController.java:351)
      at com.ibm.rmi.util.ProxyUtil.invokeWithClassLoaders(ProxyUtil.java:725)
      at com.ibm.CORBA.iiop.ClientDelegate.invoke(ClientDelegate.java:1121)
      at $Proxy2.getValidValuesWithCMT(Unknown Source)
      at ejbs._ValidValueSessionBean_Stub.getValidValuesWithCMT(_ValidValueSessionBean_Stub.java:302)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:85)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:58)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled Code))
      at java.lang.reflect.Method.invoke(Method.java(Compiled Code))
      at com.ibm.etools.utc.model.ReflectionMethodModel.invoke(ReflectionMethodModel.java:65)
      at com.ibm.etools.utc.servlet.InvokeServlet.invoke(InvokeServlet.java:111)
      at com.ibm.etools.utc.servlet.InvokeServlet.doPost(InvokeServlet.java:370)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
      at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1212)
      at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:629)
      at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:80)
      at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1657)
      at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:77)
      at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:421)
      at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:367)
      at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:94)
      at com.ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java:548)
      at com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java:601)
      at com.ibm.ws.tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java:934)
      at com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java:1021)
      at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1332)