I was wondering if someone could enumerate the touch points to ensure that one
can access an EJB that resides within one EAR from another EAR.
I am currently running up against a problem with the 'create' method of an EJB
whose context and Home Interface I can successfully retrieve from lookup and
narrow calls, respectively.
I am using JBoss 3.2.1 as my app server and am attempting to create/invoke
methods from one EJB (indirectly using a delegate) on an EJB that resides
within in an external EAR file.
Briefly, I have two ears. One application archive contains the EJB that I am
invoking and one contains an EJB for an additional business method.
I think I have created the appropriate <ejb-ref> entry in my ejb-jar.xml and
the EJB client stubs are deployed in a jar in the server/lib directory.
Any help that you can provide me will be much appreciated.
here is the suspect code snippet:
--------------------------------------------------------------------------------
public class AVSDelegate {
| //this is required by the AVS Service as an Integer
| public final static int CNSMR_ID = 1;
| private final static String SERVANT_NAME = "ejb/AVSServiceEJB";
| private InitialContext ctx = null;
|
| private void initializeContext() throws NamingException {
| if (ctx == null ) {
| ctx = new InitialContext();
| }
| }
|
| private AVSServantExchange getServant() throws NamingException,
RemoteException, CreateException {
| initializeContext();
| Object o = ctx.lookup(SERVANT_NAME);
| AVSServantExchange avsservant = null;
| if ( o != null) {
| AVSServantHome avsh = (AVSServantHome)
PortableRemoteObject.narrow(o,AVSServantHome.class);
| avsservant = avsh.create();
| }
| return avsservant;
| }
|
|
| public String ServantHello() {
| AVSServantExchange servant = null;
| String test = null;
| try {
| servant = getServant();
| } catch ( RemoteException re) {
| throw new RuntimeException("Could Not Establish
Connection to External Servant\n");
| } catch ( NamingException ne) {
| throw new RuntimeException("Could not Resolve External
Servant\n");
| } catch ( CreateException cre) {
| throw new RuntimeException("Could not Create AVS
Servant\n");
| }
| try {
| test = servant.echo("Hello Monkey");
| } catch (RemoteException e) {
| throw new RuntimeException("Could not execute external
method\n"+e);
| }
| return test;
| }
--------------------------------------------------------------------------------
on calling the AVSServantHome's 'create' method. I get the following Runtime
Exception:
2:57:38,991 ERROR [LogInterceptor] TransactionRolledbackException, causedBy:
java.lang.NullPointerException
at
org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invokeHome(StatelessSessionContainer.java:592)
at
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invokeHome(CachedConnectionInterceptor.java:206)
at
org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invokeHome(StatelessSessionInstanceInterceptor.java:51)
at
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:88)
at
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:243)
at org.jboss.ejb.plugins.TxInterceptorCMT.invokeHome(TxInterceptorCMT.java:74)
at
org.jboss.ejb.plugins.SecurityInterceptor.invokeHome(SecurityInterceptor.java:92)
at org.jboss.ejb.plugins.LogInterceptor.invokeHome(LogInterceptor.java:120)
at
org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invokeHome(ProxyFactoryFinderInterceptor.java:93)
at
org.jboss.ejb.StatelessSessionContainer.internalInvokeHome(StatelessSessionContainer.java:310)
at org.jboss.ejb.Container.invoke(Container.java:694)
at sun.reflect.GeneratedMethodAccessor160.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at
org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:549)
at org.jboss.invocation.local.LocalInvoker.invoke(LocalInvoker.java:101)
at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:83)
at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:46)
at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:45)
at org.jboss.proxy.ejb.HomeInterceptor.invoke(HomeInterceptor.java:173)
at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:85)
at $Proxy259.create(Unknown Source)
at
server.common.business.ezquote.worker.AVSDelegate.getServant(AVSDelegate.java:47)
at
server.common.business.ezquote.worker.AVSDelegate.processOrder(AVSDelegate.java:88)
at ipos.ejb.impl.ezquote.EZQuoteServantBean.orderEz(EZQuoteServantBean.java:99)
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:324)
at
org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.java:629)
at
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:186)
at
org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceInterceptor.java:72)
at
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:84)
at
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:243)
at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:104)
at
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:117)
at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:191)
at
org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:122)
at
org.jboss.ejb.StatelessSessionContainer.internalInvoke(StatelessSessionContainer.java:322)
at org.jboss.ejb.Container.invoke(Container.java:674)
at sun.reflect.GeneratedMethodAccessor160.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at
org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:549)
at org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:359)
at sun.reflect.GeneratedMethodAccessor159.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:261)
at sun.rmi.transport.Transport$1.run(Transport.java:148)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:144)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
at java.lang.Thread.run(Thread.java:534)
12:57:39,022 ERROR [LogInterceptor] EJBException, causedBy:
java.lang.RuntimeException: Could Not Establish Connection to External Servant
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3928273#3928273
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3928273
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
JBoss-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jboss-user