Как получить доступ к удаленному компоненту EJB 2.1 на JBoss 4.x из внешнего контейнера - PullRequest
1 голос
/ 05 августа 2010

У меня есть сессионный компонент, определенный в ejb-jar.xml и jboss.xml. Он определяется с помощью ejb-имени, удаленного и домашнего интерфейса и реализации.

Когда я запускаю JBoss и просматриваю дерево JNDI, кажется, что домашний интерфейс находится под именем JNDI ejb-name (я попытался определить jndi-name и local-jndi-name в ejb-jar. XML без видимого эффекта). Но удаленный интерфейс не отображается в списке JNDI.

Если я попытаюсь получить доступ к ejb-имени с помощью поиска JNDI из JUnit TestCase, то все будет в порядке, возможно потому, что я получаю доступ к домашнему интерфейсу.

Есть идеи, что я могу упустить? Заранее спасибо.

1 Ответ

2 голосов
/ 02 сентября 2010
  1. упакует домашний и удаленный интерфейсы в jar-файл клиента и поместит его в classpath клиента

  2. положить jboss-client.jar на клиентский путь к классу

  3. поместите файл jndi.properties со следующим содержимым в 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. выполнить поиск по имени JNDI удаленного интерфейса (что-то подобное по умолчанию с JBoss)

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