IBM WebSphere Application Server 8에서 실행되고 EJB 3.0 Stateless Bean이있는 애플리케이션이 있습니다. 이 Bean은 EJB 2 Stateless Bean으로 구성된 서비스를 호출합니다. 두 번째 빈은 for 루프에서 호출된다. 이 방법은 적어도 300 번 호출됩니다. 프로세스는 트랜잭션에서 발생합니다. 첫번째 빈 등으로 표시된다 :60 초 후에 EJB 원격 호출은 롤백으로 이어집니다 .Only
@TransactionManagement(TransactionManagementType.CONTAINER)
@TransactionAttribute(TransactionAttributeType.REQUIRED)
번째 빈 :
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
때로는 전체 트랜잭션이 60 초 이상 걸린다.
totalTranLifetimeTimeout="600"
LPSHeuristicCompletion="ROLLBACK"
propogatedOrBMTTranLifetimeTimeout="600"
하지만 난 아직도 내가 원인과 해결책을 찾지 못했습니다하는 문제가 발생 : 이런 이유로 나는 거래 600 초 시간 제한을 설정합니다. 첫 번째 호출 후 60 초 후에 서비스 (메소드 B)는 트랜잭션에 대해 rolebackonly true를 설정합니다. 이 메소드는 끝까지 실행되지만 이것 때문에 데이터베이스에 저장된 것이 없습니다. 모든 것이 롤백됩니다.
사실 (컨테이너 또는 데이터베이스)을 설정하는 구성 요소에 대한 추가 정보를 얻는 데 필요한 솔루션을 찾을 수 없으며 그 이유가 있습니다.
나는 모든 것을 올바르게 설명하고 모든 아이디어 나 해결책을 높이 평가되기를 바랍니다.
답장을 보내 주셔서 감사합니다. 배포 설명자 또는 서버에 "응용 프로그램 구성 요소 트랜잭션 시간 초과"가 설정되어 있지 않습니다. 한편 "클라이언트 비 활동 제한 시간"은 의미가 없습니다. 그렇지만 두 서버의 값을 120 초로 변경하여 긍정적 인 결과를 얻지는 못했습니다. 첫 번째 게시물에서 원격 ejb는 for 루프에서 호출되었으며 첫 번째 호출에서 60 초 후 첫 번째 호출에서 플래그가 이미 true로 설정되었습니다. 나는 원격 호출의 시작과 끝에서 SessionContext.getRollbackOnly()의 값을 기록하기 때문에 이것을 본다. –