I want to make two different versions of jboss talk to each other. According to http://wiki.jboss.org/wiki/JBossVersionCompatibilityMatrix I should be able to do what I want:
I have a legacy ejb 2.x application deployed on a jboss 4.0.2 and I have a newly developed ejb3 application deployed on a jboss 4.2.0.
The calls from 4.2.0 to 4.0.2 work fine.
But the calls from the 4.0.2 => 4.2.0 direction run into trouble.
The ejb3 application offers a @RemoteHome interface for the legacy application as described here
Yet the lookup of the home interface in the legacy application fails with a ClassNotFoundException because the ProxyFactory creates an ejb3 specific proxy object:
javax.naming.CommunicationException [Root exception is java.lang.ClassNotFoundException: org.jboss.ejb3.stateless.StatelessRemoteProxy (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)
The compatibility matrix I referred to above states that I "must use the legacy rmi invokers" to make this work. I have found no further documentation what these invokers are and how I configure my application to use them.
What I have found are invoker-proxy-binding definitions in the standardjboss.xml deployed in my 4.2.0 jboss. There is for example:
<invoker-proxy-binding> <name>stateless-rmi-invoker</name> <invoker-mbean>jboss:service=invoker,type=unified</invoker-mbean> <proxy-factory>org.jboss.proxy.ejb.ProxyFactory</proxy-factory> .....
Is this the right place to look for some reconfiguration? How would I need to change this for my application and how would I make the ProxyFactory return non-ejb3 specific proxy objects?
I would be grateful for any hint in finding a solution for this, as I do not have the option of simply plugging some ejb3 classes into the 4.0.2 jboss.