CMT Bean의 UserTransaction 인터페이스 사용 안함

Java EE 스펙은 CMT(Container-Managed Transaction) Bean이 UserTransaction 오브젝트에 액세스하지 못할 수도 있다는 것을 표시합니다. 하지만, WebLogic은 UserTransaction 검색을 지원합니다.

이 규칙은 다음의 코드 유형을 플래그 지정합니다.

WebLogic UserTransaction 검색
< span class="Code"> < span class= "JavaType">UserTransaction< /span> xact = ctx.lookup("javax.transaction.UserTransaction");

또는

< span class="Code"> < span class= "JavaType">UserTransaction< /span> xact = ctx.lookup("weblogic.transaction.UserTransaction");

플래그 지정되는 Bean에서는 UserTransaction 액세스가 허용되지 않습니다. 코드가 UserTransaction으로 어떤 작업을 시도하는지에 따라 솔루션이 달라집니다. 코드를 변경해야 하는 방법 또는 참조를 제거할 수 있는지 여부를 판별하려면 UserTransaction 사용을 검사하십시오.

UserTransaction의 대안으로는 UOWManager를 사용하는 방법이 있습니다. 이 관리자의 검색도 JNDI 검색을 사용합니다. 예를 들어, 다음과 같습니다.

UOWManager 검색

< span class="Code"> < span class= "JavaType"> UOWManager < /span> uowMgr = ctx.lookup(" java:comp/websphere/UOWManager ");

다른 방법은 SessionSynchronization 인터페이스를 사용하는 것이며 이를 사용하면 afterBegin, beforeCompletion 및 afterCompletion 메소드에 액세스할 수 있습니다. beforeCompletion 메소드를 사용하면, 오류 발생 시 트랜잭션의 이전 버전으로 되돌릴 수 있습니다.