В Weblogic 10.3, как я ввожу удаленный EJB от одного EAR в боб Не сохраняющий состояние другого, оба УХА, развертываемые в том же контейнере? Идеально я хотел бы сделать как можно больше с аннотациями.
Поэтому предположите, что у меня есть следующий интерфейс:
public interface HelloService {
public String hello();
}
реализованный следующим EJB:
@Stateless
@Remote
public class HelloServiceBean implements HelloService {
public String hello() {
return "hello";
}
}
Предположим, что они упаковываются и развертываются в server.ear
. Теперь в client.ear
, У меня есть следующее:
@Stateless
public class HelloClientBean {
@EJB
HelloService helloService;
// other methods...
}
Что делает я должен добавить так, чтобы Weblogic выяснил проводное соединение правильно между HelloClientBean
в client.ear
и HelloServiceBean
в server.ear
? Указатели на официальную документацию и/или книги горячо приветствуют.
Самое простое решение, которое я нашел до сих пор, заключается в следующем.
Во-первых, аннотируйте компонент без состояния с помощью атрибута mappedName
:
@Stateless(mappedName="HelloService")
@Remote
public class HelloServiceBean implements HelloService {
public String hello() {
return "hello";
}
}
Согласно http://forums.oracle.com/forums/thread.jspa?threadID=800314&tstart=1 , Weblogic никогда не создаст запись JNDI для EJB, если имя JNDI не указано как атрибут mappedName
(или в дескрипторе развертывания, или в частной аннотации).
Затем теперь вы можете аннотировать свое клиентское поле с помощью @EJB
с атрибутом mappedName
, который должен быть таким же, как атрибут в серверном компоненте . (Я искренне озадачен этим. NameNotFoundException при вызове EJB в Weblogic 10.3 предполагает, что я должен иметь возможность использовать синтаксис mappedName # interfaceName
, но в моих тестах этого не произошло. work.):
@Stateless
public class HelloClientBean {
@EJB(mappedName="HelloService")
HelloService helloService;
// other methods...
}
Теперь это работает, если оба EAR развернуты в одном контейнере. Далее я попытаюсь выяснить правильный синтаксис, когда они будут развернуты на разных машинах.