2015-01-02 3 views
0

Weblogic 11g의 외부 JMS 토픽에서 메시지를 읽도록 Tomcat7에 애플리케이션을 배치했습니다. 이것은 내 봄 응용 프로그램 컨텍스트 xml입니다. 내 클래스 패스에 wlthint3client.jar을 포함 시켰습니다. 난 JMS 리스너로 MessageListenerAdapter를 사용한 이것으로Foriegn Weblogic JMS 토픽을 읽으려고 할 때 Spring MessageListener가 Tomcat Server에서 호출되지 않음

  • <?xml version="1.0" encoding="UTF-8"?> 
     
    
     
    <beans xmlns="http://www.springframework.org/schema/beans" 
     
    \t xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     
    \t xmlns:context="http://www.springframework.org/schema/context" 
     
    \t xmlns:c="http://www.springframework.org/schema/c" 
     
    \t xmlns:p="http://www.springframework.org/schema/p" 
     
    \t xmlns:jms="http://www.springframework.org/schema/jms" 
     
    \t xmlns:tx="http://www.springframework.org/schema/tx" 
     
    \t xsi:schemaLocation="http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-4.0.xsd 
     
    \t \t http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
     
    \t \t http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd 
     
    \t \t http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 
     
    
     
    \t <!-- Uncomment and add your base-package here: <context:component-scan base-package="org.springframework.samples.service"/> --> 
     
    \t <tx:jta-transaction-manager/> 
     
    \t <bean id="jmsTransactionManager" class="org.springframework.jms.connection.JmsTransactionManager" p:connectionFactory-ref="clarifyconnectionFactory"/> 
     
    \t <bean id="clarifyTopic" class="org.springframework.jndi.JndiObjectFactoryBean" 
     
    \t \t p:jndiName="jms/ATomcatClarifyTopic" 
     
    \t \t p:proxyInterface="javax.jms.Destination" 
     
    \t \t p:jndiTemplate-ref="jndiTemplate"/> 
     
    \t <bean id="messageAdapter" class="org.springframework.jms.listener.adapter.MessageListenerAdapter" p:defaultListenerMethod="receive"> 
     
    \t <constructor-arg> 
     
    \t \t <bean class="com.jnpr.clarify.jms.DefaultTextMessageDelegate"/> 
     
    \t </constructor-arg> 
     
    \t </bean> \t 
     
    \t <bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate"> 
     
    \t \t <property name="environment"> 
     
    \t \t \t <props> 
     
    \t \t \t \t <prop key="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory</prop> 
     
    \t \t \t \t <prop key="java.naming.provider.url">t3://weblogichost:8001</prop> 
     
    \t \t \t </props> 
     
    \t \t </property> 
     
    \t </bean> 
     
    \t <!-- Lookup JMS Connection Factory --> 
     
    \t <bean id="clarifyconnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean" 
     
    \t \t p:jndiName="jms/TestTopicConnectionFactory" p:proxyInterface="javax.jms.TopicConnectionFactory" 
     
    \t \t p:jndiTemplate-ref="jndiTemplate" 
     
    \t \t p:exposeAccessContext="true"/> 
     
    
     
        \t <!-- Configuring JMS Template --> 
     
    \t <bean id='jmsTemplate' class="org.springframework.jms.core.JmsTemplate" 
     
    \t \t c:_0-ref="clarifyconnectionFactory" /> 
     
    
     
    \t <!-- Configuring Topic Listener --> 
     
    \t <bean id="topicListener" class="com.jnpr.clarify.jms.TopicListener" /> 
     
    
     
    \t <!-- Configuring MessageListenerContainer --> 
     
    \t <bean id="JMSMessageListenerContainer" 
     
    \t \t class="org.springframework.jms.listener.DefaultMessageListenerContainer" 
     
    \t \t p:destination-ref="clarifyTopic" p:connectionFactory-ref="clarifyconnectionFactory" 
     
    \t \t p:messageListener-ref="messageAdapter" p:transactionManager-ref="jmsTransactionManager" 
     
    \t \t p:durableSubscriptionName="TomcatClarify"/> 
     
    </beans>
    . 나는 또한 javax.jms.MessageListener를 구현하는 bean을 시도했다. 하지만 여전히 같은 예외가 발생합니다.
  • 내 코드에서 트랜잭션 관리를 사용하고 있지 않지만 문제가 해결되었는지 확인하기 위해 트랜잭션 관리자를 구성했습니다.
  • Tomcat 서버 로그에서 예외가 발생합니다.

    경고 : 대상 'JUN_JMS_SOA_Module! ATomcatClarifyTopic'- 복구를 위해 JMS 메시지 수신기 호출자를 설정하지 못했습니다. 원인 : [JMSClientExceptions : 055142] 외국인 대상 JMS_SOA_Module TomcatClarifyTopic 2015년 1월 1일 오후 7시 9분 13초 org.springframework.jms.listener.DefaultMessageListenerContainer refreshConnectionUntilSuccessful 정보 :! 성공적으로 새로 JMS 연결

도와주세요 뭔가 잘못하고있다면.

답변

0

위의 코드는 메시지 리스너 컨테이너가 일반 스프링 빈 대신 jms 네임 스페이스를 사용하여 구성 될 때 작동합니다.

<jms:listener-container container-type="default" acknowledge="auto" 
 
\t connection-factory="clarifyconnectionFactory" destination-type="durableTopic" 
 
\t destination-resolver="jmsDestinationResolver"> 
 
\t \t <jms:listener destination="jms/ATomcatClarifyTopic" ref="topicListener"/> 
 
\t </jms:listener-container> \t \t 
 
\t <bean id="jmsDestinationResolver" 
 
\t  class="org.springframework.jms.support.destination.JndiDestinationResolver"> 
 
\t <property name="jndiTemplate"> 
 
\t <ref bean="jndiTemplate" /> 
 
\t </property> 
 
\t <property name="cache"> 
 
\t <value>true</value> 
 
\t </property> 
 
\t </bean>

관련 문제