views:

96

answers:

1

I've got a session bean, defined in an ejb-jar.xml and jboss.xml. It's defined with an ejb-name, remote and home interface and an implementation.

When I fire up JBoss and view the JNDI tree the home interface seems to be there under the JNDI name of the ejb-name (I've tried defining jndi-name and local-jndi-name in the ejb-jar.xml with no apparent effect). But the remote interface does not appear in the JNDI listing.

If I try and access the ejb-name with a JNDI lookup from a JUnit TestCase things get messy, presumably because I'm accessing a home interface.

Any ideas what I'm likely to be missing? Thanks in advance.

+1  A: 
  1. package the home and remote interfaces into a client jar and put it on the client classpath

  2. put the jboss-client.jar on the client classpath

  3. put a jndi.properties file with the following content on the client classpath

    java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
    java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
    java.naming.provider.url=jnp://localhost:1099
    
  4. perform a lookup on the JNDI name of the remote interface (something like this by default with JBoss)

    Context c = new InitialContext();
    return (Echo) c.lookup("EchoBean/remote"); // use myEarName/HelloWorldBean/remote in an ear
    
Pascal Thivent