문제

나는 Bean Managed Transactions와 함께 Weblogic 10.0.1에서 EJB2 (레거시 짜증 ;-) 무국적 세션 Bean에서 JMS 메시지를 받으려고 노력합니다. JMS 폴더의 큐 정의는 다음과 같습니다

<uniform-distributed-queue name="ReqQueue">
  <default-targeting-enabled>true</default-targeting-enabled>
  <delivery-params-overrides>
    <delivery-mode>Non-Persistent</delivery-mode>
  </delivery-params-overrides>
  <quota>QuotaCrc</quota>
  <jndi-name>xxx.ReqQueue</jndi-name>
  <load-balancing-policy>Round-Robin</load-balancing-policy>
</uniform-distributed-queue>
<uniform-distributed-queue name="RespQueue">
  <default-targeting-enabled>true</default-targeting-enabled>
  <delivery-params-overrides>
    <delivery-mode>Non-Persistent</delivery-mode>
  </delivery-params-overrides>
  <quota>QuotaCrc</quota>
  <jndi-name>xxx.RespQueue</jndi-name>
  <load-balancing-policy>Round-Robin</load-balancing-policy>
</uniform-distributed-queue>

Bean의 비즈니스 방법은 거래를 시작하지 않으므로 JMS 운영은 트랜잭션이 아닙니다. 실행 된 코드는입니다

InitialContext ictx = new InitialContext();
QueueConnectionFactory cf = (QueueConnectionFactory) 
                       ictx.lookup("weblogic.jms.ConnectionFactory");
Queue responseQueue = (Queue) ictx.lookup("RespQueue");
conn = cf.createConnection();
session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageConsumer receiver = session.createConsumer(responseQueue);
ObjectMessage response = (ObjectMessage) receiver.receive(30000);

문제는 그 것입니다 receiver.receive 대기열의 내용에 관계없이 차단없이 즉시 널을 반환합니다. JMS API Doc.에 따르면 receiver.receive 타임 아웃으로 타임 아웃 후 또는 대상이 닫힌 경우 즉시 NULL을 반환합니다. BEAN 관리 거래, 컨테이너 관리 거래 또는 거래가 전혀없는 경우 문제가 동일합니다. JMS 메시지를 다른 대기열에 게시합니다. 동일한 방법으로 전송을 수행하는 경우에 상관없이 즉시 반품 Null을 수신합니다.

대기열이 닫힌 이유는 무엇입니까, 아니면 왜 그렇게 보입니까?

불행히도 MDB는 JMS를 통해 동기 호출을 터널해야하기 때문에 옵션이 아닙니다 (그리고 진흙 공에서 너무 많이 속이고 싶지 않습니다. ;-).

도움이 되었습니까?

해결책

전에MessageConsumer 수신기 = session.createConsumer (responsequeue);놓다conn.start ();

다른 팁

연결을 만들면 수신기 모드로 들어가기 시작해야합니다. 이 시도

 ......
 conn = cf.createConnection(); 
 conn.start();
 session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); 
 ......
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top