InjectionException in WebSphere with SFSB
chrisouellette Jul 9, 2009 7:31 PMHi,
I've read the reference documentation for WebSphere and have several application running under it successfully. I'm now working on a new application and I want to use Stateful Session Beans.
Here is my persistence.xml:
<persistence-unit name="myDB" transaction-type="JTA"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <jta-data-source>jdbc/myDBxa</jta-data-source> <non-jta-data-source>jdbc/myDB</non-jta-data-source> <properties> <property name="hibernate.show_sql" value="false" /> <property name="hibernate.transaction.flush_before_completion" value="false" /> <property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider" /> <property name="hibernate.dialect" value="org.hibernate.dialect.DB2Dialect" /> <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.WebSphereExtendedJTATransactionLookup" /> </properties> </persistence-unit>
Despite setting the hibernate.transaction.flush_before_completion property to false, I still get the error below after about 10 minutes:
A NamingException is being thrown from a javax.naming.Context implementation. Details follow: Context implementation: com.ibm.ws.naming.java.javaURLContextRoot Context method: lookup(Name) Context name: java: Target name: comp/EJBContext Other data: "" Exception stack trace: com.ibm.websphere.naming.CannotInstantiateObjectException: Exception occurred while the JNDI NamingManager was processing a javax.naming.Reference object. [Root exception is com.ibm.wsspi.injectionengine.InjectionException: EJBContext may only be looked up by or injected into an EJB] at com.ibm.ws.naming.util.Helpers.processSerializedObjectForLookupExt(Helpers.java:1021) at com.ibm.ws.naming.urlbase.UrlContextHelper.processBoundObjectForLookup(UrlContextHelper.java:191) at com.ibm.ws.naming.java.javaURLContextRoot.processBoundObjectForLookup(javaURLContextRoot.java:407) at com.ibm.ws.naming.urlbase.UrlContextImpl.lookup(UrlContextImpl.java:1280) at com.ibm.ws.naming.java.javaURLContextImpl.lookup(javaURLContextImpl.java:384) at com.ibm.ws.naming.java.javaURLContextRoot.lookup(javaURLContextRoot.java:204) at com.ibm.ws.naming.java.javaURLContextRoot.lookup(javaURLContextRoot.java:144) at javax.naming.InitialContext.lookup(InitialContext.java:363) at org.jboss.seam.util.EJB.getEJBContext(EJB.java:89) at org.jboss.seam.transaction.Transaction.createCMTTransaction(Transaction.java:69) at org.jboss.seam.transaction.Transaction.getTransaction(Transaction.java:53) at sun.reflect.GeneratedMethodAccessor430.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:618) at org.jboss.seam.util.Reflections.invoke(Reflections.java:22) at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:144) at org.jboss.seam.Component.callComponentMethod(Component.java:2249) at org.jboss.seam.Component.unwrap(Component.java:2275) at org.jboss.seam.Component.getInstance(Component.java:2041) at org.jboss.seam.Component.getInstance(Component.java:2000) at org.jboss.seam.Component.getInstance(Component.java:1994) at org.jboss.seam.Component.getInstance(Component.java:1967) at org.jboss.seam.Component.getInstance(Component.java:1962) at org.jboss.seam.transaction.Transaction.instance(Transaction.java:39) at org.jboss.seam.contexts.Contexts.flushAndDestroyContexts(Contexts.java:331) at org.jboss.seam.contexts.Lifecycle.endCall(Lifecycle.java:96) at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:122) at org.jboss.seam.intercept.RootInterceptor.invokeAndHandle(RootInterceptor.java:84) at org.jboss.seam.intercept.SessionBeanInterceptor.prePassivate(SessionBeanInterceptor.java:56) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:618) at com.ibm.ejs.container.interceptors.InterceptorProxy.invokeInterceptor(InterceptorProxy.java:227) at com.ibm.ejs.container.interceptors.InvocationContextImpl.proceed(InvocationContextImpl.java:526) at com.ibm.ejs.container.interceptors.InvocationContextImpl.doLifeCycle(InvocationContextImpl.java:231) at com.ibm.ejs.container.StatefulBeanO.passivate(StatefulBeanO.java:1083) at com.ibm.ejs.container.StatefulBeanO.uninstall(StatefulBeanO.java:1485) at com.ibm.ejs.container.activator.StatefulSessionActivationStrategy.atTimeout(StatefulSessionActivationStrategy.java:611) at com.ibm.ejs.container.activator.Activator.timeoutBean(Activator.java:851) at com.ibm.ejs.container.StatefulBeanReaper.deleteBean(StatefulBeanReaper.java:468) at com.ibm.ejs.container.StatefulBeanReaper.sweep(StatefulBeanReaper.java:295) at com.ibm.ejs.container.StatefulBeanReaper.alarm(StatefulBeanReaper.java:252) at com.ibm.ejs.util.am._Alarm.run(_Alarm.java:90) at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1469)
Is anyone else still getting this error in WebSphere even after they set up their properties correctly in persistence.xml? Anything else I should be looking at? Let me know if you want to see the code of my SFSB.
Thanks,
-Chris