Liberty는 EJB 원격 인터페이스에 아웃바운드 또는 인바운드 트랜잭션 전파를 지원하지 않습니다. 기본적으로 EJB Bean은 컨테이너 관리 방식이며 Required 트랜잭션 속성을 사용합니다. 따라서 container-transaction 특성을
지정하지 않는
기존 EJB 정의는 기본적으로 지원되지 않는
트랜잭션을 사용하도록 구성됩니다.
이 규칙을 통해서는 원격 비즈니스 또는 홈 인터페이스 사용을 표시하는 다음 EJB 어노테이션을 참조하는 Java 코드에 플래그를 지정합니다.
javax.ejb.Remotejavax.ejb.RemoteHome또한 이 규칙은 ejb-jar.xml 파일에서 다음 참조에 플래그를 지정합니다.
<remote/><business-remote/>
EJB 스펙에서는 아웃바운드 트랜잭션 전파를 지원하는 제품이 계속하여
널 트랜잭션 컨텍스트를 전송해야 합니다.
그러나 Required(기본값), Mandatory 또는 Supports
트랜잭션 속성을 사용하는 EJB 컴포넌트는 이 컨텍스트를 거부합니다. 클라이언트 또는 서버가 Liberty에 있는 경우 활성 글로벌 트랜잭션을 갖는 클라이언트는
기본 트랜잭션 속성을 사용하여 EJB Bean을 시작할 수 없습니다.
클라이언트가 EJB Bean을 시작할 수 있게 하려면 RequiresNew 또는
NotSupported 트랜잭션 속성을 사용하도록 EJB Bean을 변경하십시오. 이 속성을 통해 EJB Bean을 시작할 수 있어도
EJB Bean에서
수행하는 트랜잭션 작업은 클라이언트
트랜잭션의 파트로 커미트되지 않습니다.
동일한 JVM에서 실행되는 EJB 원격 인터페이스에 트랜잭션 전파가 지원되지만, 이는 애플리케이션 동작을 추가로 조사해서만 결정할 수 있습니다.
종종 EJB 2.x Bean은 사용되지 않는 경우에도 ejb-jar.xml에 원격 인터페이스를 구성합니다.
서로 다른 두 개의 JVM에서 실행 중인 코드가 있으면 원격 인터페이스만 필요합니다.
WebSphere 관점에서 두 개의 서로 다른 애플리케이션 서버 사이 또는 서로 다른 JVM에서 실행되는
클라이언트 애플리케이션과 애플리케이션 서버 사이입니다.
EJB 검색에서 CORBA 정보(예: iiop:// 제공자 URL)도 원격 EJB Bean이
사용 중임을 나타냅니다.
원격 인터페이스를 사용하여 동일한 JVM에서 실행되는 EJB Bean을 참조하는 경우,
로컬 인터페이스를 사용할 수 있으며 성능이 향상됩니다.
가능한 경우 주석을 @Remote에서 @Local로, @RemoteHome에서 @LocalHome으로 변경하고 모든 코드 시나리오를
테스트하십시오.
ejb-jar.xml 구성과 마찬가지로 <remote/> 및 <business-remote/> 정의를 제거하고
모든 시나리오를 테스트하십시오.
이 시나리오에서는 트랜잭션 전파가 지원되지만 우수 사례는 로컬 인터페이스를 사용하도록 변환하여 성능을 개선하고
동일한 JVM 에서 메소드를 외부적으로 호출할 수 있다는 인식을 제거하는 것입니다.
원격 액세스가 필요한 EJB Bean의 경우 우수 사례는 웹 서비스에서 랩핑하는 것입니다. WebSphere Application Server Developer Tools for Eclipse를 사용하여 이와 같이 코드를 변경하는 데 관한 지침은 EJB bean에 어노테이션을 작성하여 웹 서버 작성을 참조하십시오. 웹 서비스에서 EJB bean을 랩핑한 다음 웹 서비스 클라이언트를 사용하여 EJB 웹 서비스를 호출하십시오. 테스트한 다음 EJB 원격 어노테이션 또는 구성을 제거할 수 있습니다.
관련 항목에 관한 자세한 정보는 다음을 참조하십시오.