2008-09-26 3 views
0

OC4J 10.1.2.3에서 10.1.3.1.4로 마이그레이션하는 데 문제가 있습니다. 문제는 여러 EJB가있는 응용 프로그램 (모두 2.1, EJB 3.0 없음)에 대한 것입니다. Jdeveloper는 기본 ejb-jar.xml (독립 실행 형 OC4J 인스턴스에서 Jdeveloper를 실행하는 데 필요한 JDK)을 가져 와서 각 EJB JAR 모듈에 NO MATTER로 패키지화합니다. 이로 인해 앱 서버는 배포 할 때 각 EJB JAR 모듈을 뚫고 동일한 ejb-jar.xml 파일을 N 번 찾습니다 (N = EJB 모듈 수). 결과적으로 EJB 참조가 중복되고 "java : comp/env/ejb/EJBName"과 같은 JNDI 조회가 중단됩니다. 따라서 3 개의 EJB, EJB1, EJB2 및 EJB3이있는 응용 프로그램을 배포하면 응용 프로그램 서버가 3 개가 아닌 9 개의 EJB를 등록하게됩니다. 모범 사례가 필요하지만 10.1.3.4와 JDeveloper가 상황을 오히려 수행하고 있습니다. ...OC4J 10.1.3.4 다중 2.1 EJB를 배치 할 때의 문제점

사이드 노트 : 웹 응용 프로그램의 JNDI 조회 코드가 "ejb/EJBName"로 refract되는 경우 작동합니다. 그러나 이것은 바람직하지 않습니다.

답변

0

문제는 배포 프로필에서 여러 번 참조되었습니다. 각 EJB에 대한 배포 프로필을 만들었습니다. 이것은 각 EJB가 자신의 ejb-jar.xml을 가짐을 의미합니다 (이 파일에는 프로젝트의 모든 EJBS에 대한 설명이 들어 있습니다). 따라서 JDeveloper가 EJB를 생성 할 때마다 생성 된 각 EJB에 EJBS의 모든 설명자를 배치하여 NxN의 참조를 발생시킵니다. 따라서 Nx (N-1) 개의 추가 참조.

이제 Oracle Application Server 10.1.2.3.0 및 bellow는 이러한 중복 참조를 신경 쓰지 않았습니다. 그러나 우리가 볼 수 있듯이, 10.1.3.1.4는 많은 다른 버전이고 이것은 깨졌습니다.

우리의 수정 : 모든 EJB 클래스와 그들이 사용하는 POJO를 포함하는 EJB 배치 프로파일이 1 개뿐입니다. 기억하기 전에 각 EJB에 대해 1 개의 EJB 프로파일이 있다는 것을 명심하십시오.이 모든 것이 Jdeveloper (허위 IMHO)가 으로 정확하게 허용되었습니다.은 유효한 EAR을 생성합니다. Jdeveloper와 오라클의 Application Server의 결합은 이러한 문제의 원인입니다.

1

어떤 경우에 오라클 설명서를 확인해야합니다. Oracle Containers for J2EE Enterprise JavaBeans Developer 's Guide는 좋은 시작입니다. Oracle Containers for J2EE 서비스 안내서 2 장 : JNDI 사용 "ejb/EJBName"형식을 사용할 때 "로컬"조회를 수행합니다. 전체 양식을 사용하려면 "JNDI 사용"장의 "전역 JNDI 조회 사용"절을 확인해야합니다.

+0

로컬 조회를 사용하도록 강요하여 중복 참조를 피하고 있습니다. 중복 참조는이를 위반하는 것으로 보입니다. – Zombies

관련 문제