2010-07-26 5 views
7

웹 물건과 EJB로 구성되며 EJB3.1을 사용하여 WAR 전용으로 배포되는 JavaEE6 응용 프로그램이 있습니다. 빌드는 Maven을 기반으로합니다. 방금 Java EE 6 here에서 모듈 초기화를 주문할 수있는 새로운 가능성에 대해 읽었습니다.이 모듈은 제 응용 프로그램에도 필요합니다. 또한, 일부 EJB 속성을 XML로 정의하는 옵션이 필요합니다.EJB 3.1 응용 프로그램을 WAR 전용으로 배포 : ejb-jar.xml은 어떻습니까?

이 예제는 EAR 프로젝트로 배포되므로 주문은 application.xml에 정의되어 있습니다. 그러나 WAR가 배포 된 프로젝트에는 application.xml이 없습니다. 이제 나는 그러한 정보를 어디에서 정의 할 수 있을까? 또는 WAR 전개 된 응용 프로그램에서 application.xml을 어떻게 사용할 수 있습니까?

는 편집 :

아차 내가 모듈 주문 - 예를 읽어 보지 않았 바로 첫 순간에 내가 그것을하는 내 응용 프로그램의 EJB를로드하는 순서에 대해 생각했다. 물론 WAR-app에는 모듈이 하나 밖에 없으므로 순서가 맞지 않습니다.

괜찮 았어.하지만 나는 그것에 큰 의문을 가지고있다. (변경 사항을 반영하기 위해 제목을 변경했다.) ejb-jar.xml은 어떻습니까? 어떻게 든 내 EJB에 대한 것들을 XML로 정의 할 수 있습니까? (재 컴파일을 피하기 위해 몇 가지 설정에 유용합니다)?

+0

편집 된 멋진 질문 btw. 내 대답을 업데이트했습니다. –

답변

9

요약하면 WAR 기반 배포에서는 불가능합니다.

Java EE 6의 모듈 초기화 기능은 특정 순서로 응용 프로그램의 다른 모듈을 초기화하기위한 것입니다. WAR 기반 EJB 응용 프로그램을 사용하는 순간 EJB 및 웹 응용 프로그램 용 모듈이 더 이상 필요하지 않습니다. WAR 기반 배포에는 웹 응용 프로그램 모듈 모듈이 하나만 있습니다. 별도의 모듈에

  • 분리합니다 EJB : 자바 EE 6에서 제공되는 모듈의 초기화 순서와 동일 기능을 달성해야하는 경우

    따라서, 당신은 다음 중 하나를 수행해야합니다 , EAR 기반 배치를 사용하십시오.

  • 이것은 Java EE 5에서와 같이 다소 까다 롭습니다. 따라서이를 피하고 싶을 것입니다. 코드에서 활용되기 전에 싱글 톤 EJB가 생성되었는지 (응용 프로그램에서 싱글 톤을 사용했기 때문이라고 가정) 논리를 코딩 할 수 있습니다. A의 배치 때 (포장에 관한 장에서) WAR 파일

    The EJB 3.1 specification에서의 ejb-jar.xml의의

위치는 EJB-jar.xml 파일의 위치의 문제를 해결 WAR하십시오 .war 파일에서

, 배포 기술자는 이름 WEB-INF/EJB-jar.xml의 함께 저장됩니다.

추신 : 아직이 스타일의 배포를 시도하지 않았습니다. YMMV.

+0

정보 주셔서 감사합니다! 그냥 내 질문을 변경 내 편집을 참조하십시오. – ifischer

+3

참고로 EJB를 EJB-JAR로 패키지화하고 WAR 내에 배치 할 수 있습니다. –

5

.wars 및 ejb-jar.xml 처리의 EJB에 대한 사이드 노트. 이미 언급했듯이 위치는 WEB-INF/ejb-jar.xml뿐 아니라 WEB-INF/lib/안에 ejbs jar가 있어도 위치가 확인 된 경우 이라는 메모가 있습니다. 표준 규칙을 통해 META-INF/ejb-jar.xml 파일은 무시됩니다.

전문가 그룹은 전문가 그룹이 아닌 하나의 전문가 그룹으로 분할되었으므로 환경 설정이있는 경우 EJB.next에서 EJB 3.1 전문가 그룹 목록에 피드백을 보내려면 너무 늦지 않았습니다.

개인 항아리는 이제 META-INF/ejb-jar.xml 파일을 가질 수있었습니다. 이제이 항아리에는 persistence.xml, beans.xml, 웹 조각 등이있을 수 있습니다. META-INF/ejb-jar.xml 파일을 각각 포함하는 여러 개의 jar/모듈을 허용하는 EAR 스타일 클래스 경로를 지원하는 임베디드 EJB 컨테이너 API와는 확연한 차이가 있습니다. 결과적으로 임베디드 API를 사용하여 단일 .war 파일로 구성된 다중 jar ejb 앱을 테스트하면 하나의 ejb에있는 모든 ejb-jar.xml 데이터를 병합하는 작업에 직면하게됩니다 webapp의 -jar.xml. 사용자에게 일종의 통증.

관련 문제