2013-10-28 5 views
1

WebLogic 10.3.5에서 MDB (EJB 3.0)를 만들려고합니다. 외부 AMQ 서버에서 대기열을 청취합니다. 많은 작업과 자습서 조합 후에 webLogic에 배포 할 때 다음 오류가 발생합니다.외부 AMQ 서버를 수신하도록 WebLogic MDB 구성

[EJB : 015027] 메시지 구동 EJB는 트랜잭션이지만 JNDI 이름으로 참조되는 JMS 연결 팩토리 : ActiveMQXAConnectionFactory는 JMS XA 연결 팩토리가 아닙니다. 여기

내가 수행 한 작업에 대한 간략한입니다 :

I (이 tuturial http://amadei.com.br/blog/index.php/connecting-weblogic-and-activemq 다음) 내 WLS 클래스 경로에 해당 라이브러리를 추가하고, 튜토리얼에 표시된대로 나는 해당 JMS 모듈을 만들었습니다 . ActiveMQConnectionFactory를 처음 사용하고 ActiveMQXAConnectionFactory를 나중에 사용하고 jms도 무시합니다. 표기법은 testQueue로 일반 이름을 넣는다.

다음 구조로 간단한 MDB를 만듭니다. "connectionFactoryJndiName"속성을 명시 적으로 정의했습니다. 그렇지 않으면 WebLogic 연결 팩토리가없는 것으로 가정하고 오류가 발생하기 때문에이 속성을 명시 적으로 정의했습니다.

@MessageDriven(
     activationConfig = { 
       @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"), 
       @ActivationConfigProperty(propertyName = "destination", propertyValue = "testQueue"), 
       @ActivationConfigProperty(propertyName = "connectionFactoryJndiName", propertyValue = "ActiveMQXAConnectionFactory") 
     }, 
     mappedName = "testQueue") 
public class ROMELReceiver implements MessageListener { 

    /** 
    * Default constructor. 
    */ 
    public ROMELReceiver() { 
     // TODO Auto-generated constructor stub 
    } 

    /** 
    * @see MessageListener#onMessage(Message) 
    */ 
    public void onMessage(Message message) { 
     System.out.println("Message received"); 
    } 

} 

이 시점에서 나는 위에서 언급 한 오류가 붙어 있습니다. 단순히 ActiveMQConnectionFactory 대신 ActiveMQXAConnectionFactory를 사용하더라도 웹 로직 서버의 JNDI 리소스 트리는 설정된 연결 팩토리의 클래스 인 org.apache.activemq.ActiveMQConnectionFactory를 보여줍니다.

내가 누락 된 항목이 있습니까? 또는 이것은 AMQ를 사용하여 WebLogic을 연결하는 완전히 잘못된 방법일까요?

미리 감사드립니다.

+0

어떤 ActiveMQ 버전을 사용하고 있습니까? –

+0

ActiveMQ 5.8을 사용하고 있습니다. –

답변

0

나는 그 늦은 것을 알고 있지만 나는 최근에 같은 일을해야했고 같은 오류가 발생했다. 이 게시물이 나를 도와 :

https://community.oracle.com/thread/3903705

은 기본적으로는 웹 로직에서 모듈의 외국 서버 옵션에 JNDI 속성에서 새로운 매개 변수를 추가했다.

xa = true.

activemq는 기본적으로 Xa 연결을 사용하지 않기 때문에.