2014-07-16 2 views
1
I have problem in configuring JNDI lookup for ejb3.1 and weblogic 12c, jdk1.6 

@Remote 
public interface Bank{ 

    public String accounts(); 

} 

@Stateless(name="BankSession") 
public class BankSessionBean implements Bank{ 

    @Override 
    public String accounts() { 
       //////// } 

ejb-jar.xml: 

    <enterprise-beans> 
     <session> 
      <display-name>BankSession</display-name> 
      <ejb-name>BankSession</ejb-name> 
      <business-remote>com.examples.Bank</business-remote> 
      <ejb-class>com.examples.BankSessionBean</ejb-class> 
      <session-type>Stateless</session-type> 
      <transaction-type>Bean</transaction-type> 
     </session> 
    <enterprise-beans> 

weblogic-ejb-jar.xml: 

<weblogic-enterprise-bean> 
    <ejb-name>BankSession</ejb-name>  
    <jndi-name>BankSession</jndi-name> 
    </weblogic-enterprise-bean> 


client code: 

때 JNDI이 구문을 자바 사용하여 조회 사용을 시작 : 오류 다음 완/ENV/EJB/BankSessionEJB 3.1, 웹 로직 12C, 자바 1.6 JNDI 조회 문제

그것의 기부를.

javax.naming.NameNotFoundException : 'java : comp/env/ejb/BankSession'을 (를) 검색하는 동안 하위 컨텍스트가 없습니다.

여기서 ejbbean 및 클라이언트 코드는 다른 jvm에서 실행됩니다.

내가 사용해야하는 Jndi는 어느 것입니까?

  1. 자바 : 광고/ENV/EJB/BankSession '
  2. 자바 : 글로벌/applicationName에/MODULENAME/BankSession
  3. 자바 : 모듈/BankSession
  4. 자바 : 응용 프로그램/MODULENAME/BankSession

java : comp/env/ejb/BankSession은 ejb 3.0 및 oc4j 서버에서 잘 작동합니다.

ejb3.1 및 weblogic 12c로 마이그레이션 할 때 작동하지 않습니다.

weblogic deployment xml 파일을 사용하지 않고도 시도해 보았습니다. 동일한 문제가 발생했습니다.

여기서 내 Jndi를 어떻게 구성해야합니까? 오랫동안이 문제에 직면 해 있습니다.

답변

1

java : comp/env/...의 형태로 조회 할 경우 조회를 수행하는 구성 요소의 배치 설명자에 EJB 참조가 필요합니다! java : comp/env/...는 항상 조회를 수행하는 구성 요소를 기준으로합니다.

조회를 수행하는 실제 구성 요소와 무관 어디서나 응용 프로그램 내부에서 작동하는 조회 이름은 4 : 자바입니다 : 응용 프로그램/MODULENAME/...

자바 :/프로그램 응용/글로벌 ... 귀 파일을 언젠가 이름을 바꾸기로 결정하면 실패합니다. java : module/...은 같은 모듈의 일부인 구성 요소 내에서만 작동합니다. 그래서 4. 가장 좋은 대안은 IMO입니다.

+0

java : comp/env /에 대해 ejb ref를 추가해야하는 배포 설명자는 무엇입니까? 나는 ejb ref가 이미 application-client.xml 파일에있다. \t EJB/BankInquirySession 세션 com.examples.Bank BankInquirySession \t user3791049

+0

bean (ejb, servlet, java 클라이언트)의 클라이언트는 어떤 모듈/컴포넌트입니까? 해당 모듈/구성 요소에 대한 참조를 추가해야합니다. Application-client.xml은 두꺼운 Java 클라이언트에 대한 설명자이므로 잘못된 것입니다. – Gas

+0

아 좋아요. 나는 당신이 애플리케이션 클라이언트로부터 조회를했음을 압도했다. 응용 프로그램 클라이언트에서 조회를 수행하면 java : app/...가 작동하지 않을 수 있습니다. 그런 다음 ejb-ref/BankInquirySession을 BankInquirySession으로 해결하고 java : comp/env/BankInquirySession을 조회 할 것을 권장합니다. –