[jboss-user] [EJB/JBoss] - accessing EJBs in isolated ear's
pri20
do-not-reply at jboss.com
Wed Apr 4 16:12:42 EDT 2007
Hi,
I'm using Jboss 4.0.2. The environment I am working in has the Isolation and CallByValue set to true in the ear-deployer.xml. Additionally, we have configured ALL our EJB's and JNDI lookups to use RMI over http/https.
I'm trying to deploy 2 ear's EARA and EARB containing 2 stateless session beans SessionA and SessionB respectively. I want SessionA/EARA to access SessionB/EARB. When I try to do the SessionB lookup from SessionA it fails with the exception below
13:32:40,925 INFO [STDOUT] java.rmi.ServerException: EJBException:; nested exception is:
javax.ejb.EJBException: Invalid invocation, check your deployment packaging, method=public abstract temp.SessionBObject temp.SessionBHome.create() throws java.rmi.RemoteException,javax.ejb.CreateException
13:32:40,925 INFO [STDOUT] at org.jboss.ejb.plugins.LogInterceptor.handleException(LogInterceptor.java:352)
13:32:40,925 INFO [STDOUT] at org.jboss.ejb.plugins.LogInterceptor.invokeHome(LogInterceptor.java:125)
13:32:40,925 INFO [STDOUT] at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invokeHome(ProxyFactoryFinderInterceptor.java:93)
13:32:40,925 INFO [STDOUT] at org.jboss.ejb.SessionContainer.internalInvokeHome(SessionContainer.java:613)
13:32:40,925 INFO [STDOUT] at org.jboss.ejb.Container.invoke(Container.java:894)
13:32:40,925 INFO [STDOUT] at sun.reflect.GeneratedMethodAccessor117.invoke(Unknown Source)
13:32:40,925 INFO [STDOUT] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
13:32:40,925 INFO [STDOUT] at java.lang.reflect.Method.invoke(Method.java:585)
13:32:40,926 INFO [STDOUT] at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
13:32:40,926 INFO [STDOUT] at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
13:32:40,926 INFO [STDOUT] at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
13:32:40,926 INFO [STDOUT] at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:249)
13:32:40,926 INFO [STDOUT] at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
13:32:40,926 INFO [STDOUT] at org.jboss.invocation.local.LocalInvoker$MBeanServerAction.invoke(LocalInvoker.java:155)
13:32:40,926 INFO [STDOUT] at org.jboss.invocation.local.LocalInvoker.invoke(LocalInvoker.java:104)
13:32:40,926 INFO [STDOUT] at org.jboss.invocation.InvokerInterceptor.invokeLocal(InvokerInterceptor.java:179)
13:32:40,926 INFO [STDOUT] at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:165)
13:32:40,926 INFO [STDOUT] at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:46)
13:32:40,926 INFO [STDOUT] at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:55)
13:32:40,926 INFO [STDOUT] at org.jboss.proxy.ejb.HomeInterceptor.invoke(HomeInterceptor.java:169)
13:32:40,926 INFO [STDOUT] at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:86)
13:32:40,926 INFO [STDOUT] at $Proxy159.create(Unknown Source)
I am also attaching relevant parts of my configuration xmls for EARA. My ejb-jar.xml for EARA are as follows
<enterprise-beans>
<ejb-name>SessionABean</ejb-name>
test.SessionAHome
test.SessionAObject
<ejb-class>test.SessionABean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
<ejb-ref>
Reference to sessionB ears
<ejb-ref-name>ejb/SessionBEJB</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
temp.SessionBHome
temp.SessionBObject
</ejb-ref>
<security-identity>
<use-caller-identity/>
</security-identity>
..
and the jboss.xml for EARA is as follows
<ejb-name>SessionABean</ejb-name>
<configuration-name>HTTPS Stateless SessionBean</configuration-name>
<invoker-bindings>
<invoker-proxy-binding-name>a-stateless-http-ssl-invoker</invoker-proxy-binding-name>
</invoker-bindings>
<ejb-ref>
<ejb-ref-name>ejb/SessionBEJB</ejb-ref-name>
<jndi-name>jnp://localhost:1099/SessionBBean</jndi-name>
</ejb-ref>
...
Additonally, I am a bit confused with the <jndi-name> element in the jboss.xml above. I tried to use the same lookup I use in my ejb clients viz.
http://localhost:8080/invoker/JNDIFactory/SessionBEJB
but it gives a
javax.naming.NamingException: Could not dereference object [Root exception is javax.naming.NameNotFoundException: http: not bound]
The code I use to do the lookup is as follows:
| Context testcontext = new InitialContext();
| Object objref = testcontext.lookup("java:comp/env/ejb/SessionBEJB");
| SessionBHome home = PortableRemoteObject.narrow(objref,
| _SessionBHome.class);
|
Can anyone point out what I am doing wrong or is it even possible to access EJBs across isolated EAR's.
Thanks.
Priya
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4034769#4034769
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4034769
More information about the jboss-user
mailing list