2012-03-30 2 views
1

로컬 JNDI로 Tomcat ressource로 ActiveMQ를 설정하려고합니다. 하지만 브로커 URI "brokerConfig = xbean : activemq.xml"에 config-file을 추가하면 브로커가 오류 메시지없이 시작되지 않습니다. ActiveMQ as local JNDI tomcat ressource

Mrz 30, 2012 10:23:19 AM org.springframework.jms.listener.DefaultMessageListenerContainer refreshConnectionUntilSuccessful 
Warnung: Could not refresh JMS Connection for destination 'FOO.QUEUE' - retrying in 5000 ms. Cause: Could not create Transport. Reason: java.io.IOException: Could not load xbean factory:java.lang.NoClassDefFoundError: Could not initialize class org.apache.activemq.xbean.XBeanBrokerFactory 

내가 http://svn.apache.org/repos/asf/activemq/trunk/assembly/src/release/conf/activemq.xml에서 기본 설정을 사용하고 내 src 폴더의 루트에 배치됩니다 :

은 날에게 말하고 유지합니다. 내가 "ActiveMQ를-all_5.4.3.jar"를 사용하고

"의 WebContent의 \의 META-INF"나의 web.xml을

<resource-ref> 
    <description>JMS Connection</description> 
    <res-ref-name>jms/ConnectionFactory</res-ref-name> 
    <res-type>org.apache.activemq.ActiveMQConnectionFactory</res-type> 
    <res-auth>Container</res-auth> 
    <res-sharing-scope>Shareable</res-sharing-scope> 
</resource-ref> 

<resource-ref> 
    <res-ref-name>jms/FooQueue</res-ref-name> 
    <res-type>javax.jms.Queue</res-type> 
    <res-auth>Container</res-auth> 
</resource-ref> 

"의 WebContent의 \의 WEB-INF"나의 applicationContext.xml

<jee:jndi-lookup id="fooQueue" 
    jndi-name="java:comp/env/jms/FooQueue" 
    cache="true" 
    resource-ref="true" 
    lookup-on-startup="true" 
    expected-type="org.apache.activemq.command.ActiveMQQueue" 
    proxy-interface="javax.jms.Queue" /> 


<bean id="singleConnectionFactory" 
    class="org.springframework.jms.connection.SingleConnectionFactory" 
    p:targetConnectionFactory-ref="connectionFactory"/> 

<bean id="jmsTemplate" 
    class="org.springframework.jms.core.JmsTemplate" 
    p:connectionFactory-ref="singleConnectionFactory" 
    p:defaultDestination-ref="fooQueue"/> 

<bean id="messageSenderService" 
    class="by2.server.JmsMessageSenderService" 
    p:jmsTemplate-ref="jmsTemplate" /> 

<bean id="jmsMessageDelegate" 
    class="by2.server.JmsMessageDelegate" /> 

<bean id="myMessageListener" 
    class="org.springframework.jms.listener.adapter.MessageListenerAdapter" 
    p:delegate-ref="jmsMessageDelegate" 
    p:defaultListenerMethod="handleMessage"> 
</bean> 

<jms:listener-container 
    container-type="default" 
    connection-factory="singleConnectionFactory" 
    acknowledge="auto"> 
     <jms:listener destination="FOO.QUEUE" ref="myMessageListener" /> 
</jms:listener-container> 

나를 위해

<Context reloadable="true"> 
    <Resource auth="Container" name="jms/ConnectionFactory" 
     type="org.apache.activemq.ActiveMQConnectionFactory" description="JMS Connection Factory" 
     factory="org.apache.activemq.jndi.JNDIReferenceFactory" brokerURL="vm://localhost?brokerConfig=xbean:activemq.xml" 
     brokerName="FooBroker" /> 

    <Resource auth="Container" name="jms/FooQueue" 
     type="org.apache.activemq.command.ActiveMQQueue" description="JMS queue" 
     factory="org.apache.activemq.jndi.JNDIReferenceFactory" physicalName="FOO.QUEUE" /> 
</Context> 
+0

위의 샘플을 실행하려고합니다. 참고 : - http://www.tomcatexpert.com/blog/2010/12/20/integrating-activemq-tomcat-using-global-jndi#ex-tomcat-server-xml 그러나 org.springframework.web.util을 가져 오는 중입니다. .NestedServletException : 요청 처리에 실패했습니다. 중첩 예외는 JMS 처리 중에 분류되지 않은 예외가 발생했습니다. 중첩 예외는 javax.jms.JMSException : 전송을 만들 수 없습니다. 이유 : org.springframework.beans.factory.BeanDefinitionStoreException : 클래스 패스의 XML 문서를 파싱하는 IOException 리소스 [conf/activemq.xml]; –

답변

1

"의 WebContent의 \의 META-INF"나의 context.xml에 그것을 리터를 찾습니다 클래스 경로 오류. 클래스 경로에 xbean-spring-x.x.jar가 있습니까? 이 파일을 activemq 배포본에서 복사하지 않고 응용 프로그램 서버 클래스 경로에 저장하십시오.