ClassLoader problems while deploying a EJB3
malmei Jul 5, 2006 12:43 PMHello
The following happens, when i deploy an ejb3:
17:50:01,984 WARN [ServiceController] Problem creating service jboss.j2ee:service=EJB3,module=Tools.ejb3
java.lang.ClassNotFoundException: No ClassLoaders found for: de.s2i.service.tools.MsgConsumerBean
at org.jboss.mx.loading.LoadMgr3.beginLoadTask(LoadMgr3.java:212)
at org.jboss.mx.loading.RepositoryClassLoader.loadClassImpl(RepositoryClassLoader.java:511)
at org.jboss.mx.loading.RepositoryClassLoader.loadClass(RepositoryClassLoader.java:405)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at org.jboss.ejb3.Ejb3AnnotationHandler.populateBaseInfo(Ejb3AnnotationHandler.java:280)
at org.jboss.ejb3.Ejb3AnnotationHandler.getContainers(Ejb3AnnotationHandler.java:126)
at org.jboss.ejb3.Ejb3Deployment.deployElement(Ejb3Deployment.java:567)
at org.jboss.ejb3.Ejb3Deployment.deployElement(Ejb3Deployment.java:555)
at org.jboss.ejb3.Ejb3Deployment.deployUrl(Ejb3Deployment.java:536)
at org.jboss.ejb3.Ejb3Deployment.deploy(Ejb3Deployment.java:508)
at org.jboss.ejb3.Ejb3Deployment.create(Ejb3Deployment.java:463)
at org.jboss.ejb3.Ejb3Module.createService(Ejb3Module.java:125)
at org.jboss.system.ServiceMBeanSupport.jbossInternalCreate(ServiceMBeanSupport.java:260)
at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:243)
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:585)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:978)
at $Proxy0.create(Unknown Source)
at org.jboss.system.ServiceController.create(ServiceController.java:330)
at org.jboss.system.ServiceController.create(ServiceController.java:273)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
at $Proxy34.create(Unknown Source)
at org.jboss.ejb3.EJB3Deployer.create(EJB3Deployer.java:429)
[ ... lines deleted ... ]
This is the class (MsgConsumerBean.java):
package de.s2i.service.tools;
import javax.annotation.Resource;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.Local;
import javax.ejb.MessageDriven;
import javax.ejb.MessageDrivenBean;
import javax.ejb.MessageDrivenContext;
import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.jms.Message;
@Stateless
@Local( { MsgConsumerLocal.class } )
@Remote( { MsgConsumerRemote.class } )
@MessageDriven(activationConfig =
{
@ActivationConfigProperty(propertyName="destinationType",
propertyValue="javax.jms.Queue"),
@ActivationConfigProperty(propertyName="destination",
propertyValue="queue/mdpojo"),
@ActivationConfigProperty(
propertyName = "minPoolSize",
propertyValue = "1"),
@ActivationConfigProperty(
propertyName = "maxPoolSize",
propertyValue = "1")
})
public class MsgConsumerBean implements MsgConsumerLocal,MsgConsumerRemote,MessageDrivenBean {
// @CurrentMessage private javax.jms.Message currentMessage;
@Resource
private MessageDrivenContext ctx;
// **** MessageDrivenBean
public void ejbCreate() {
System.out.println("ConsumerMDB: created");
}
public void ejbRemove() {
System.out.println("ConsumerMDB: removed");
}
public void setMessageDrivenContext(MessageDrivenContext ctx) {
System.out.println("ConsumerMDB: set context");
this.ctx = ctx;
}
// **** MessageListener
public void onMessage(Message message) {
System.out.println("ConsumerMDB - onMessage called: "+message.toString());
}
public void doConsume(Object obj) {
System.out.println("Just consuming "+obj.toString());
}
}
-----
package de.s2i.service.tools;
import javax.ejb.Local;
@Local
public interface MsgConsumerLocal {
public void doConsume(Object obj);
}
-----
package de.s2i.service.tools;
import javax.ejb.Remote;
@Remote
public interface MsgConsumerRemote {
public void doConsume(Object obj);
}
-----
jboss is of version 4.0.4GA, EJB is 3.0 RC8-FD.
I searched google back and forth, but there was no help. I already set the
"CallByValue" in naming-service.xml to false (read about that in a posting), but it didn't change anything ...
Has anyone an idea what happens here?
Thanx in advance
Malte