2009-10-13 2 views
7

서로 다른 weblogic 서버에 배포되는 2 개의 세션 빈, OrderBean 및 InventoryBean이 있습니다.다른 서버를 통해 EJB를 주입하기 위해 @EJB 주석을 사용할 수 있습니까?

공급이 충분한 지 확인하기 위해 OrderBean이 InventoryBean에 액세스해야합니다.

현재 JNDI 조회를 사용하여 InventoryBean을 찾습니다. 정상적으로 작동합니다.

이제 @EJB를 사용하여 JNDI 이름과 xml 또는 다른 곳에 URL을 제공하여 InventoryBean을 주입 할 수 있는지 궁금합니다.

답변

3

EJB 주석을 통해 불가능하다고 생각하지만 WebLogic 서버에서 foreign JNDI을 구성하고 원격 EJB를 로컬 JNDI 이름으로 참조 할 수 있습니다. 그러나, 나는 그것을 결코 시도하지 않았다, 그러나 나는 그것이 일해야한다고 생각한다.

+0

감사합니다 그리고 당신이 말한 것처럼 잘 작동 :

는 한 번 봐주세요. – Eric

+0

하지만 주석으로 표시 할 수 있습니까? 아니면 로컬 jndi를 코딩하여 조회해야합니까? –

8

마지막으로 이것을 수행하는 방법을 발견했습니다.

i. WebLogic Server에서 외부 JNDI를 구성하고 원격 EJB를 로컬 JNDI 이름에 연결하십시오. 예를 들어

:

 
Local JNDI: 
InventoryBean#com.pkg.InventoryBean (MAPPEDNAME#FULLNAME) 
link to 
Remote JNDI: 
ServiceBean#com.pkg.InventoryBean 

II. ejb-jar.xml에서 ejb-ref를 구성하십시오.

 
ejb-ref-name -> ejb/InventoryBean 
remote -> com.pkg.InventoryService 
mapped-name -> InventoryBean 

iii. OrderBean에 @EJB 주석을 추가하십시오.

 
@EJB(name = "ejb/InventoryBean") 
private InventoryService inventoryService; 
0

아주 AS에만 한정됩니다.

보스 7+는 가능하면 경우 수 :

  1. 독립형 파일 outbound-socket-binding, security-realmremote-outbound-connection (모든 원격 JBoss의 인스턴스를 참조)를 정의합니다.
  2. 패키지 응용 프로그램의 META-INF 폴더에 jboss-ejb-client.xml을 추가하고 응용 프로그램에 필요한 모든 연결에 대해 remoting-ejb-receiver을 추가하십시오.
  3. 는 자세한 내용이 필요한 경우 알려줘 @EJB(lookup = "<jndi_name>")

와 원격 EJB를 주입한다. 실제로 내가 그 전에 시도했다

관련 문제