UnsupportedOperationException with WAS 6.0, CMT , Hibernate
lakida Dec 14, 2006 8:16 AMEnvironment:
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)