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

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

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

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

Есть идеи, что мне может не хватать? Заранее спасибо.


person rich    schedule 05.08.2010    source источник
comment
Сам не знаком с JBoss, но могу указать две ссылки: jaitechwriteups .blogspot.com / 2006/07 / и community.jboss.org/ thread / 31861? tstart = 0   -  person JoseK    schedule 05.08.2010


Ответы (1)


  1. упаковать домашний и удаленный интерфейсы в клиентскую банку и поместить ее в путь к классам клиента

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

  3. поместите jndi.properties файл со следующим содержимым в путь к классам клиента

    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
    
person Pascal Thivent    schedule 02.09.2010