EJB 2.1 problems with EJB 3.0
jbeer May 4, 2006 8:20 PMHi,
I've been racking my head for days on this, any help would be appreciated.
I am using quartz for scheduling. I am using the EJBInvoker (if you don't know about this, don't worry it's not that important) to invoke an EJB when a trigger is fired. Quartz's EJBInvoker job requires EJB 2.1 syntax, and requires me to lookup the remoteHome interface: "EarName/TestBean/remoteHome"
I have the following EJB & interfaces:
@Local
public interface Test {
public void doThisWhenFired();
}
public interface TestRemote extends EJBObject, Test {}
public interface TestRemoteHome extends EJBHome {
public TestRemote create() throws java.rmi.RemoteException, javax.ejb.CreateException;
}
@Stateless(name="TestBean")
@RemoteHome(TestRemoteHome.class)
@Remote(TestRemote.class)
@Local
public class TestBean implements Test {
public TestBean() {}
public void doThisWhenFired() {
System.out.println("Job executed!");
}
public void ejbCreate() throws CreateException {}
}
I have tried a number of packaging/deployment approaches, and I get the following error (full stack trace at the bottom of this message):
Caused by: java.lang.ClassNotFoundException: No ClassLoaders found for: com.blah.TestRemoteHome (no security manager: RMI class loader disabled)
Currently, I package all of these together into an ejb3 (the interfaces and the Stateless bean), which is inside the .ear (and referenced in the application.xml file ...), without any success.
If anybody can point me in the right direction, or sees any flaws in what I'm doing (I'm fairly new to all of this), I would really appreciate some direction. I have been working on this for days.
Thanks,
Jonathan
org.quartz.JobExecutionException: javax.naming.CommunicationException [Root exception is java.lang.ClassNotFoundException: No ClassLoaders found for: com.blah.TestRemoteHome (no security manager: RMI class loader disabled)] [See nested exception: javax.naming.CommunicationException [Root exception is java.lang.ClassNotFoundException: No ClassLoaders found for: com.blah.TestRemoteHome (no security manager: RMI class loader disabled)]]
at org.quartz.jobs.ee.ejb.EJBInvokerJob.execute(EJBInvokerJob.java:156)
at org.quartz.core.JobRunShell.run(JobRunShell.java:203)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:520)
* Nested Exception (Underlying Cause) ---------------
javax.naming.CommunicationException [Root exception is java.lang.ClassNotFoundException: No ClassLoaders found for: com.blah.TestRemoteHome (no security manager: RMI class loader disabled)]
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:713)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:572)
at javax.naming.InitialContext.lookup(InitialContext.java:351)
at org.quartz.jobs.ee.ejb.EJBInvokerJob.execute(EJBInvokerJob.java:154)
at org.quartz.core.JobRunShell.run(JobRunShell.java:203)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:520)
Caused by: java.lang.ClassNotFoundException: No ClassLoaders found for: com.texadasoftware.server.infra.reporting.TestRemoteHome (no security manager: RMI class loader disabled)
at sun.rmi.server.LoaderHandler.loadProxyClass(LoaderHandler.java:531)
at java.rmi.server.RMIClassLoader$2.loadProxyClass(RMIClassLoader.java:628)
at org.jboss.system.JBossRMIClassLoader.loadProxyClass(JBossRMIClassLoader.java:70)
at java.rmi.server.RMIClassLoader.loadProxyClass(RMIClassLoader.java:294)
at sun.rmi.server.MarshalInputStream.resolveProxyClass(MarshalInputStream.java:238)
at java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1494)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1457)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1693)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339)
at java.rmi.MarshalledObject.get(MarshalledObject.java:135)
at org.jnp.interfaces.MarshalledValuePair.get(MarshalledValuePair.java:57)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:637)
... 5 more