2014-07-10 5 views
0

Я пытаюсь развернуть пакет jboss5 bean project на сервере jboss7. Другой разработчик уже внес некоторые изменения, которые код может работать на jboss7, например, поместить в проект jboss-deployment-structure.xml.Проблемы с EJB 3.1

Я создал две фасоли, одну в проекте A (BeanA) и одну в проекте B (BeanB). BeanA должен искать BeanB. . Я всегда получаю «Нет EJB найденного с интерфейсом типа 'de.foo.soa.foobar.al.BeanB' для связывания de.foo.soa.foobar.ba.ProjectB/BeanB

Bean B:

import javax.ejb.Stateless; 
    import javax.ejb.LocalBean; 

    @Stateless 
    @LocalBean 
    public class NumSrvLocalBean { 

     public String testNumSrv() { 
      return "numsrv works"; 
     } 
    } 

Компонент А делает:

@EJB private NumSrvLocalBean numSrvLocalBean; 
private String numSrvLocalBean_path = "java:module/NumSrvLocalBean!de.foo.soa.foobar.al.NumSrvLocalBean"; 
ctx = new InitialContext(); 
numSrvLocalBean = (NumSrvLocalBean) ctx.lookup(numSrvLocalBean_path); 

Я также добавил правильную зависимость от JBoss-развертывания-structure.xml:

<module name="deployment.ProjectB.jar" export="true"/> 

Так everty вещь прекрасно для моего понимания, но я всегда получаю это исключение. Я создал свой собственный проект, назвав его проектом X. Там я могу найти любой Bean, который я хочу, из всех других проектов (около 15). Я не могу вводить в проект A любой bean-компонент вне проекта A. Но я могу добавлять компоненты в проект. Таким образом, должно быть что-то, что блокирует бобы внутри проекта.

У меня есть эти файлы в проекте A:

  • jboss.xml
  • JBoss развертывания-structure.xml
  • MANIFEST.MF (стандарт, не заполненный)
  • настойчивость. xml
  • seam.properties
  • ProjectA.properties (содержит wsdlUrl, поскольку этот проект также был настроен как проект XML-RPC)

Я с нетерпением ждет четыре ваших идей,

приветствия.

+0

Я не уверен здесь, но AFAIK 'java: module' будет означать поиск в модуле _current_, поэтому вы можете искать BeanC из BeanA. Вам нужно будет добавить имя модуля в путь поиска. Посмотрите на консоль управления (порт 9990 по умолчанию) и проверьте связанные пути JNDI. – Thomas

+0

Вы правы, но я также тестировал его с помощью «global: ..». То, что получилось: 15: 32: 38,953 ОШИБКА [stderr] (нить службы службы 1-5) javax.naming.NameNotFoundException: ProjectA/ProjectA! De.foo.soa.foobar.ba.BeanA - service jboss.naming .context.java.global.ProjectA. "BeanA! de.foo.soa.foobar.ba.BeanA" 15: 32: 38,955 ОШИБКА [stderr] (нить обслуживания 1-5) \t на org.jboss.as .naming.ServiceBasedNamingStore.lookup (ServiceBasedNamingStore.java:97) (и больше строк). – JeromeC

+0

Исправьте меня, если я ошибаюсь, но я ничего не увижу в консоли управления, потому что нет никакой развернутой причины ошибки. – JeromeC

ответ

0

Я решил эту проблему с помощью EJB (mappedName = "java: global/...."). Я уже пробовал EJB (mappedName = className.JNDI_NAME), но это не сработало. Мы использовали интерфейсы в JBoss 5, где мы определили имя JNDI как

@Local 
public interface ClassNameLocal extends ClassNameInterface { 

    /** Name im JNDI (Java Naming and Directory Interface) */ 
    public final static String JNDI_NAME = "foo/bar/and/so/on/ClassName/local"; 

} 

Это, кажется, больше не работают. Мне нужно было использовать полный путь.

Смежные вопросы