users@glassfish.java.net

Local Session Bean Call Exception in Glassfish

From: <glassfish_at_javadesktop.org>
Date: Thu, 19 Mar 2009 12:17:38 PDT

I have been having trouble calling a Local Session bean in Glassfish.

I set up an example to show the exception I am having:


----------

[b]MainBeanLocal[/b]
[code]
    package com.test;
    import javax.ejb.Local;
    
    @Local
    public interface MainBeanLocal {
            void testCall();
    }[/code]


----------

[b]MainBean[/b]:
[code]
    package com.test;
    
    import javax.ejb.Stateless;
    
    /**
     * Session Bean implementation class MainBean
     */
    @Stateless(mappedName = "ejb/MainBean")
    public class MainBean implements MainBeanLocal {
            @Override
            public void testCall() {
                    System.out.println("Test Call Succeeded");
                    
            }
    }[/code]


----------

[b]RemoteBeanRemote[/b]:
[code]
    package com.test;
    import javax.ejb.Remote;
    
    @Remote
    public interface RemoteBeanRemote {
            public void callMainBean();
    }[/code]


----------

[b]RemoteBean[/b]:
[code]
    package com.test;
    
    import javax.ejb.Stateless;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    
    /**
     * Session Bean implementation class RemoteBean
     */
    @Stateless(mappedName = "ejb/RemoteBean")
    public class RemoteBean implements RemoteBeanRemote {
            @Override
            public void callMainBean() {
    
                    try {
                            InitialContext ctx = new InitialContext();
                            MainBeanLocal mb = (MainBeanLocal) ctx.lookup("ejb/MainBean");
                            mb.testCall();
                    } catch (NamingException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                    }
            }
    }[/code]


----------


[b]Test Code[/b]:
[code]
    package com.test;
    
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    
    public class BeanTester {
            public static void main(String[] args){
    
                    try {
                            InitialContext ctx = new InitialContext();
                            RemoteBeanRemote remote = (RemoteBeanRemote) ctx.lookup("ejb/RemoteBean");
                            remote.callMainBean();
                    } catch (NamingException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                    }
            }
    }[/code]

[b]Output Trace[/b]:
[code]
    INFO: deployed with moduleid = TestEJB
    INFO: **RemoteBusinessJndiName: ejb/RemoteBean; remoteBusIntf: com.test.RemoteBeanRemote
    INFO: LDR5010: All ejb(s) of [TestEJB] loaded successfully!
    
    WARNING: javax.naming.NameNotFoundException: MainBean not found
            at com.sun.enterprise.naming.TransientContext.doLookup(TransientContext.java:216)
            at com.sun.enterprise.naming.TransientContext.lookup(TransientContext.java:188)
            at com.sun.enterprise.naming.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:74)
            at com.sun.enterprise.naming.LocalSerialContextProviderImpl.lookup(LocalSerialContextProviderImpl.java:111)
            at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:409)
            at javax.naming.InitialContext.lookup(InitialContext.java:392)
            at com.test.RemoteBean.callMainBean(RemoteBean.java:19)
            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:597)
            at com.sun.enterprise.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1011)
            at com.sun.enterprise.security.SecurityUtil.invoke(SecurityUtil.java:175)
            at com.sun.ejb.containers.BaseContainer.invokeTargetBeanMethod(BaseContainer.java:2920)
            at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:4011)
            at com.sun.ejb.containers.EJBObjectInvocationHandler.invoke(EJBObjectInvocationHandler.java:203)
            at com.sun.ejb.containers.EJBObjectInvocationHandlerDelegate.invoke(EJBObjectInvocationHandlerDelegate.java:117)
            at $Proxy71.callMainBean(Unknown Source)
            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:597)
            at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie._invoke(ReflectiveTie.java:154)
            at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(CorbaServerRequestDispatcherImpl.java:687)
            at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:227)
            at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1846)
            at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:1706)
            at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleInput(CorbaMessageMediatorImpl.java:1088)
            at com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:223)
            at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:806)
            at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.dispatch(CorbaMessageMediatorImpl.java:563)
            at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.doWork(CorbaMessageMediatorImpl.java:2567)
            at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:555)
[/code]

What am I doing wrong when calling **MainBeanLocal**? I would like to avoid dependency injection, as if the MainBeanLocal was being called from a POJO.


[b]Note:[/b] I have no trouble calling the [i][b]RemoteBean[/b][/i].. I want to be able to call the local bean from the remote bean.
[Message sent by forum member 'cloutierm' (cloutierm)]

http://forums.java.net/jive/thread.jspa?messageID=338007