[jboss-user] [EJB3] - Lookup and invoke a _local_ EJB via a remote EJB by a remote client

Matthias M. do-not-reply at jboss.com
Tue Jun 19 10:40:38 EDT 2012


Matthias M. [https://community.jboss.org/people/virtuellesnugat] created the discussion

"Lookup and invoke a _local_ EJB via a remote EJB by a remote client"

To view the discussion, visit: https://community.jboss.org/message/742757#742757

--------------------------------------------------------------
Hi there,

I'm new to the jboss AS and the EJB. The book I've read doesn't help me, since the new JNDI naming changes so much.

But during the last days I've managed to setup the server, deploy some remote stateful and stateless session beans. But now I'm trying something different:
* Local stateless session bean named "TimeBean", with it's interface "ITimeLocal"
* Remote stateless session bean named "CallerBean", with it's interface "ICallerRemote"
* and a remote Client named "CallerClientBean"

*ITimeLocal*
package test.jboss.umweg.server.local;
 
import javax.ejb.Local;
 
@Local
public interface ITimeLocal {
    public long getTime();
}


*TimeBean*
package test.jboss.umweg.server.local;
 
import java.util.Date;
 
import javax.ejb.Local;
import javax.ejb.Stateless;
 
@Stateless
@Local(ITimeLocal.class)
public class TimeBean implements ITimeLocal {
 
    @Override
    public long getTime() {
        return new Date().getTime();
    }
 
}


So that's just the local bean. It was deployed successfully and the JNDI Bindings where created.

The call from the CallerClientBean to the CallerBean works fine (I tested with "return 0").

But when I tried the real call it wouldn't work:
Extracted from *CallerBean*
@Override
    public long askTime() {
        // lookup and invoke Local Bean, return time
        try {
            Context context = getInitialContext();
            ITimeLocal szb = (ITimeLocal) context.lookup(getJndiName());
            long time = szb.getTime();
            System.out.println("Time: " + time);
            return time;
        } catch (NamingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return 0;
    }


I build the *InitialContext* like this (+though I didn't set a "jboss-ejb-client.properties" on server side, *maybe that's a problem*+):
private InitialContext getInitialContext() throws NamingException {
       Hashtable p = new Hashtable();
        p.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
        return new InitialContext(p);
    }


And I tried two different *JNDI* names:
* the same I've been building the other ones:
ejb:/TimeBean//TimeBean!test.jboss.umweg.server.local.ITimeLocal
* and the global JNDI binding I got from the deploy:
java:global/TimeBean/TimeBean!test.jboss.umweg.server.local.ITimeLocal

But I guess my main-problem is, that I'm not aware of howto call a local bean. And I couldn't find anything really helpful. I didn't post the Exceptions (first runtime, the illegalState), but I bet my faults are obvious to most people here  :) 

Thanks!!
--------------------------------------------------------------

Reply to this message by going to Community
[https://community.jboss.org/message/742757#742757]

Start a new discussion in EJB3 at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2029]

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-user/attachments/20120619/32a1bf55/attachment.html 


More information about the jboss-user mailing list