2010-12-01 3 views
0

별도의 JSF 응용 프로그램에서 배포 된 EJB 응용 프로그램을 어떻게 사용합니까?별도의 JSF 및 EJB 응용 프로그램

두 응용 프로그램을 분리하고 원격 인터페이스를 통해 EJB에 액세스하려고합니다. 이렇게하려면 두 개의 Eclipse 프로젝트가 있습니다. 하나는 EJB 및 지속성 논리를 포함하고 독립적으로 테스트되고 작동합니다. 그런 다음 EJB 프로젝트를 참조하는 JSF 프로젝트를 만들었으므로 (원격 인터페이스에 액세스 할 수 있도록) EJB 인스턴스를 주입하거나 JNDI 이름을 조회하려고 시도 할 때 실패합니다 (여러 변형을 시도하지 않았습니다). 이것이 내 JSF 백킹 빈에 포함 된 것이다.

@EJB (lookup = "java : global/LocEJB/LocalityEJB! com.ame.business.LocalityEJBRemote") private LocalityEJBRemote locality;

이것은 글래스 피쉬에 있으며 EJB 프로젝트를 참조하고 JSF 프로젝트로 패키징하지 않습니다. 후자를 수행 할 때 JSF 프로젝트에서 EJB 컨테이너 문제를 초기화하는 중 오류가 발생합니다. 그렇다면 원격 EJB에 어떻게 액세스 할 수 있습니까? 그리고 제가 접근하고있는 방식이 의미가 있습니까?

미리 감사드립니다.

답변

1

JSF 애플리케이션은 EJB 인터페이스에 대해 알아야합니다 (최소한 EJB 2.0에서 수행 했음). 프록시 패턴을 사용하여 JSF 클라이언트의 원격 컴포넌트임을 숨 깁니다.

+0

그게 핵심입니다. JSF를 배포하여 인터페이스에 대해 컴파일하고 컨테이너가 주입을 관리하도록하려면 어떻게해야합니까?하지만 EJB와 JSF를 함께 패키징/배포하지 않아도됩니까? – MilkJug

+0

두 가지 모두에 공통 코드가 있어야합니다. 공유하는 JAR 일 수 있습니다. – duffymo

+0

고마워, 나는 그것을 시도 할 것이다. – MilkJug

0

우선 컨테이너 외부에 액세스하려는 경우 로컬 인터페이스를 사용할 수 없습니다. 원격 인터페이스를 사용해야합니다.

bean의 sun-web.xml 또는 EJB 주입에서 Remote 인터페이스를 정의 할 수 있습니다.

sun-web.xml에 코드 :

<ejb-ref> 
    <ejb-ref-name>com.xxx.session.UserRemote</ejb-ref-name> 
    <jndi-name>corbaname:iiop:127.0.0.xxx:3700#com.xxx.session.UserRemote</jndi-name> 
    </ejb-ref> 

또 다른 것은 당신이 당신의 클래스 경로에 원격 인터페이스가 있어야합니다.

관련 문제