EJB component CREATE not found
guinotphil Mar 20, 2012 6:21 AMHello,
I’m having this issue for a little time, and I can’t seem to solve it.
Here is what actually happens, I get from times to times this exception, but I can’t find exactly when and why it happens:
2012-03-16 18:42:28,449 ERROR [org.jboss.ejb3.invocation] JBAS014134: EJB Invocation failed on component ejbs/myEjbName for method public abstract void myproject.ejbs.MyEJB.destroy(): javax.ejb.EJBException: java.lang.RuntimeException: JBAS014539: Failed to activate {[-108, -113, 92, 95, 0, -81, 71, -34, -89, 36, 36, -15, -38, -28, 3, -110]}
at org.jboss.as.ejb3.tx.CMTTxInterceptor.handleExceptionInOurTx(CMTTxInterceptor.java:166)
at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:230)
at org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:304)
at org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:190)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
at org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
at org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(LoggingInterceptor.java:59)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
at org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
at org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:32)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
at org.jboss.as.ee.component.TCCLInterceptor.processInvocation(TCCLInterceptor.java:45)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
at org.jboss.as.ee.component.ViewService$View.invoke(ViewService.java:165)
at org.jboss.as.ee.component.ViewDescription$1.processInvocation(ViewDescription.java:173)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
at org.jboss.as.ejb3.component.stateful.StatefulComponentIdInterceptor.processInvocation(StatefulComponentIdInterceptor.java:52)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
at org.jboss.as.ee.component.ProxyInvocationHandler.invoke(ProxyInvocationHandler.java:72)
at myproject.ejbs.MyEJB$$$view34.destroy(Unknown Source)
at sun.reflect.GeneratedMethodAccessor2286.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.jboss.seam.util.Reflections.invoke(Reflections.java:22)
at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:32)
at org.jboss.seam.intercept.ClientSideInterceptor$1.proceed(ClientSideInterceptor.java:76)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56)
at org.jboss.seam.ejb.RemoveInterceptor.aroundInvoke(RemoveInterceptor.java:43)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107)
at org.jboss.seam.intercept.ClientSideInterceptor.invoke(ClientSideInterceptor.java:54)
at org.javassist.tmp.java.lang.Object_$$_javassist_seam_40.destroy(Object_$$_javassist_seam_40.java)
at sun.reflect.GeneratedMethodAccessor2306.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
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:2275)
at org.jboss.seam.Component.callDestroyMethod(Component.java:2206)
at org.jboss.seam.Component.destroy(Component.java:1472)
at org.jboss.seam.contexts.Contexts.destroy(Contexts.java:251)
at org.jboss.seam.contexts.Contexts.destroyConversationContext(Contexts.java:413)
at org.jboss.seam.contexts.Lifecycle.endSession(Lifecycle.java:286)
at org.jboss.seam.contexts.ServletLifecycle.endSession(ServletLifecycle.java:187)
at org.jboss.seam.servlet.SeamListener.sessionDestroyed(SeamListener.java:59)
at org.apache.catalina.session.StandardSession.expire(StandardSession.java:690)
at org.apache.catalina.session.StandardSession.expire(StandardSession.java:653)
at org.apache.catalina.session.StandardManager.stop(StandardManager.java:676)
at org.apache.catalina.core.StandardContext.stop(StandardContext.java:3995)
at org.jboss.as.web.deployment.WebDeploymentService.stop(WebDeploymentService.java:108)
at org.jboss.msc.service.ServiceControllerImpl$StopTask.stopService(ServiceControllerImpl.java:1911)
at org.jboss.msc.service.ServiceControllerImpl$StopTask.run(ServiceControllerImpl.java:1874)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.RuntimeException: JBAS014539: Failed to activate {[-108, -113, 92, 95, 0, -81, 71, -34, -89, 36, 36, -15, -38, -28, 3, -110]}
at org.jboss.as.ejb3.cache.spi.impl.FilePersistentObjectStore.load(FilePersistentObjectStore.java:191)
at org.jboss.as.ejb3.cache.spi.impl.FilePersistentObjectStore.load(FilePersistentObjectStore.java:52)
at org.jboss.as.ejb3.cache.impl.backing.SimpleBackingCacheEntryStore.get(SimpleBackingCacheEntryStore.java:103)
at org.jboss.as.ejb3.cache.impl.backing.SerializationGroupMemberContainer.get(SerializationGroupMemberContainer.java:279)
at org.jboss.as.ejb3.cache.impl.backing.SerializationGroupMemberContainer.get(SerializationGroupMemberContainer.java:50)
at org.jboss.as.ejb3.cache.impl.backing.PassivatingBackingCacheImpl.get(PassivatingBackingCacheImpl.java:135)
at org.jboss.as.ejb3.cache.spi.impl.AbstractCache.get(AbstractCache.java:66)
at org.jboss.as.ejb3.cache.spi.impl.AbstractCache.get(AbstractCache.java:39)
at org.jboss.as.ejb3.component.stateful.StatefulComponentInstanceInterceptor.processInvocation(StatefulComponentInstanceInterceptor.java:59)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:228)
... 57 more
Caused by: org.jboss.msc.service.ServiceNotFoundException: Service service jboss.deployment.subunit."EAR_Project.ear"."EJB_Project.jar".component.ejbs/myEjbName.CREATE not found
at org.jboss.msc.service.ServiceContainerImpl.getRequiredService(ServiceContainerImpl.java:447)
at org.jboss.as.ejb3.component.stateful.SerializedStatefulSessionComponent.readResolve(SerializedStatefulSessionComponent.java:43)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.jboss.marshalling.reflect.SerializableClass.callReadResolve(SerializableClass.java:325)
at org.jboss.marshalling.river.RiverUnmarshaller.doReadNewObject(RiverUnmarshaller.java:1236)
at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:272)
at org.jboss.marshalling.river.BlockUnmarshaller.readObject(BlockUnmarshaller.java:153)
at org.jboss.marshalling.river.BlockUnmarshaller.readObject(BlockUnmarshaller.java:139)
at org.jboss.marshalling.MarshallerObjectInputStream.readObjectOverride(MarshallerObjectInputStream.java:57)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:344)
at org.jboss.as.ejb3.cache.impl.backing.SerializationGroupMemberImpl.readObject(SerializationGroupMemberImpl.java:358)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.jboss.marshalling.reflect.SerializableClass.callReadObject(SerializableClass.java:213)
at org.jboss.marshalling.river.RiverUnmarshaller.doInitSerializable(RiverUnmarshaller.java:1574)
at org.jboss.marshalling.river.RiverUnmarshaller.doReadNewObject(RiverUnmarshaller.java:1235)
at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:272)
at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:209)
at org.jboss.marshalling.AbstractObjectInput.readObject(AbstractObjectInput.java:37)
at org.jboss.as.ejb3.cache.spi.impl.FilePersistentObjectStore.load(FilePersistentObjectStore.java:180)
... 67 more
Caused by: an exception which occurred:
in object of type org.jboss.as.ejb3.component.stateful.SerializedStatefulSessionComponent
in object of type org.jboss.as.ejb3.cache.impl.backing.SerializationGroupMemberImpl
My application is an EJB application which contains a WAR module, an EJB module and Seam 2.2.2
In my standalone.xml the EJB passivation is defined by:
<subsystem xmlns="urn:jboss:domain:ejb3:1.2">
<session-bean>
<stateless>
<bean-instance-pool-ref pool-name="slsb-strict-max-pool"/>
</stateless>
<stateful default-access-timeout="5000" cache-ref="passivating"/>
<singleton default-access-timeout="5000"/>
</session-bean>
<mdb>
<resource-adapter-ref resource-adapter-name="hornetq-ra"/>
<bean-instance-pool-ref pool-name="mdb-strict-max-pool"/>
</mdb>
<pools>
<bean-instance-pools>
<strict-max-pool name="slsb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>
<strict-max-pool name="mdb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>
</bean-instance-pools>
</pools>
<caches>
<cache name="simple" aliases="NoPassivationCache"/>
<cache name="passivating" passivation-store-ref="file" aliases="SimpleStatefulCache"/>
</caches>
<passivation-stores>
<file-passivation-store name="file"/>
</passivation-stores>
<async thread-pool-name="default"/>
<timer-service thread-pool-name="default">
<data-store path="timer-service-data" relative-to="jboss.server.data.dir"/>
</timer-service>
<remote connector-ref="remoting-connector" thread-pool-name="default"/>
<thread-pools>
<thread-pool name="default">
<max-threads count="10"/>
<keepalive-time time="100" unit="milliseconds"/>
</thread-pool>
</thread-pools>
<iiop enable-by-default="false" use-qualified-name="false"/>
</subsystem>
As you can see the passivation is enabled for stateful bean. The default settings (no passivation cache) caused even more EJB exception with Seam.
My EJB is defined by this interface
package myproject.ejbs;
import javax.ejb.Local;
@Local
public interface MyEJB
{
boolean myBusinessMethod();
void init();
void destroy();
}
And this implementation:
package myproject.ejbs;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.Remove;
import javax.ejb.Stateful;
import javax.persistence.EntityManager;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.AutoCreate;
import org.jboss.seam.annotations.Destroy;
import org.jboss.seam.annotations.JndiName;
import org.jboss.seam.annotations.Logger;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.security.Restrict;
import org.jboss.seam.annotations.web.RequestParameter;
@AutoCreate
@Scope(ScopeType.SESSION)
@Stateful(name=MyEJBImpl.EJB_NAME)
@JndiName(MyEJBImpl.JNDI_NAME)
@Name("ejbs.myEjbName")
public class MyEJBImpl implements MyEJB, Serializable
{
private static final long serialVersionUID = 9058879769483082826L;
public static final String EJB_NAME = "ejbs/myEjbName";
public static final String JNDI_NAME = "java:global/EAR_Project/EJB_Project/" + EJB_NAME;
@Logger
Log log;
@Override
@Create
@Begin(join=true)
public void init() {
log.debug("Creating #0", EJB_NAME);
}
@Override
@Remove
@Destroy
public void destroy() {
log.debug("Removing EJB #0", EJB_NAME);
}
@Override
public boolean myBusinessMethod() {
......
}
}
And, when the exception from above is happening, running this code:
Class cl = Class.forName("org.jboss.msc.service.ServiceContainerImpl");
java.lang.reflect.Method getService = cl.getDeclaredMethod("getService", org.jboss.msc.service.ServiceName.class);
getService.setAccessible(true);
return getService.invoke(org.jboss.as.server.CurrentServiceContainer.getServiceContainer(), org.jboss.msc.service.ServiceName.parse("jboss.deployment.subunit.\"EAR_Project.ear\".\"EJB_Project.jar\".component.ejbs/myEjbName.CREATE"));
does not return null ! So I dont understand how the component could not be found....
Thank you very much for your help.