2010-08-14 6 views
11

저는 EJB 3를 처음 접했고 Google이 만족스러운 답을 제시하지 못했다는 의심을 꽤 혼동합니다.EJB 3에서 클라이언트 jar를 사용하고 디자인 패턴을

다른 기본 응용 프로그램에서 사용할 수있는 기본 클래스와 유틸리티 메서드가있는 프레임 워크를 만들려고합니다. 모든 응용 프로그램은 동일한 서버에 배포됩니다.

Eclipse에서 새 EJB 3.0 프로젝트를 만들려고 할 때 클라이언트 jar도 만들지 묻습니다. 이 클라이언트 항아리는 어떤 용도로 사용됩니까? 내 ejbmodule은 EAR 파일의 일부로 추가됩니다. 그래서 정말로이 클라이언트 항아리가 필요합니까? 로컬 및 원격 인터페이스를 모두 만들어야합니까? 아니면 단지 원격 인터페이스가 할 것인가?

나는 projApps의 모든 projCommon라는 프로젝트의 인터페이스와 bean 정의를 유지하기로 결정했다. Bean 클래스가 구현하는 원격 인터페이스는 projCommon에 있습니다. 그래서 projApps는 projCommon에 의존합니다.

projCommon에 정의 된 대리자 메서드를 사용하여 Bean 클래스를 호출 할 계획입니다. 즉, projCommon도 projApps에 종속됩니다. 그리고 순환 종속성으로 이어집니다.

정확히 어떻게 EJB를 직접 주입합니까?

내 의구심에 대한 설명을 친절하게 제공 할 수 있다면 정말 도움이 될 것입니다.

답변

22

이클립스에서 새 EJB 3.0 프로젝트를 만들려고 할 때 클라이언트 병을 만들지 묻습니다. 목적이 클라이언트 항아리는 무엇을 제공합니까?

EJB 클라이언트 JAR 파일은 클라이언트 프로그램이 EJB JAR 파일에 포함 된 Enterprise Bean의 클라이언트보기를 사용해야하는 모든 클래스 파일을 포함 할 수있는 선택적 JAR 파일입니다. 당신이 EJB 모듈에 대한 클라이언트 JAR 파일을 작성하지 않으려면 클라이언트 인터페이스 클래스의 모든

내 ejbmodule가 EAR 파일의 일부로 추가되는 EJB JAR 파일에있을 것입니다. 그래서 나는 정말로 이것을 클라이언트 항아리가 필요합니까?

EJB 클라이언트가 실제로 필요하지는 않지만 클라이언트의 EJB를 사용하기 쉬운 패키지를 제공합니다.

로컬 및 원격 인터페이스를 모두 만들어야합니까? 아니면 그냥 원격 인터페이스를 할 것인가?

모든 EJB가 동일한 EAR에 있으면 원격 인터페이스가 필요하지 않으면 로컬 인터페이스를 사용할 수 있습니다. 로컬 인터페이스가보다 효율적이며 호출은 참조로 수행됩니다.
일부 컨테이너 (예 : WebSphere)는 런타임시이를 최적화하고 가능한 경우 자동으로 로컬 인터페이스를 호출합니다.

나는 모든 인터페이스 projCommon라는 프로젝트 및 projApps에서 bean 정의를 유지하기로 결정했다.bean 클래스가 구현하는 원격 인터페이스는 projCommon에 있습니다. 그래서 projApps는 projCommon에 종속됩니다.

저는 프로젝트를 기능 영역별로 정리했습니다. 기능 영역과 기능 영역 외부의 원격 호출을 통해 지역 통화를 할 수 있습니다. 이렇게하면 나중에 다른 서버에 배포 할 기능을 분할하여 확장 할 수 있습니다. 또한 코드를 모듈화하여 유지합니다. 또한 순환 종속성을 피할 수 있습니다.

정확하게 EJB의 직접 입력 은 정확히 어떻게 주입됩니까?

작동 방식은 중요하지 않습니다. 이는 컨테이너에서 수행하게 될 것입니다. J2EE의 요점은 그 방법을 추상화하는 것입니다.

http://www.developer.com/print.php/3650661 당으로 :

EJB 3 개 컨테이너는 무 상태 세션 빈으로 자원의 다양한 종류를 주입 시설을 제공합니다. 일반적으로 사용자 작업을 수행하거나 클라이언트 응용 프로그램에서 요청을 처리하려면 세션 bean의 비즈니스 메소드에 하나 이상의 유형의 자원이 필요합니다. 이러한 자원은 다른 세션 빈, 데이터 소스 또는 메시지 대기열이 될 수 있습니다.

stateless 세션 bean이 사용하려고하는 리소스는 주석 또는 배포 설명자를 사용하여 주입 할 수 있습니다. 인스턴스 변수의 주석이나 setter 메소드의 주석으로 리소스를 얻을 수 있습니다.

0

자세한 내용은 here을 참조하십시오. 희망이 도움이됩니다.

관련 문제