2011-01-13 8 views
2

Ich habe einen ActiveMQ MessageListener erstellt und mit Spring konfiguriert. Ich hosste den Hörer in Tomcat. Wenn ich die Webanwendung starte (die nur den Listener enthält), sollte der Listener automatisch starten? Oder brauche ich eine zusätzliche Konfiguration?ActiveMQ-Nachrichten-Listener in Tomcat starten?

Hier ist was ich habe. Zuerst aktualisiert, um die web.xml Feder zu ermöglichen, damit er beim Start zu konfigurieren,

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 

    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 

    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/classes/spring/applicationContext.xml</param-value> 
    </context-param> 

</web-app> 

Dann habe ich die applicationContext.xml erstellt die ActiveMQ Zuhörer zu konfigurieren,

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:amq="http://activemq.apache.org/schema/core" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 

    <context:annotation-config /> 
    <context:component-scan base-package="com.somepackage"/> 

    <context:property-placeholder location="classpath:env.properties"/> 

    <bean id="jmsFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> 
     <property name="brokerURL" value="tcp://localhost:61616" /> 
    </bean> 

    <bean id="documentListener" class="com.somepackage.SomeListener" /> 

    <bean id="container" 
     class="org.springframework.jms.listener.DefaultMessageListenerContainer"> 
     <property name="connectionFactory" ref="cachingConnectionFactory"/> 
     <property name="messageListener" ref="documentListener"/> 
     <property name="destinationName" value="STOCKS.MSFT" /> 
    </bean> 

    <bean id="cachingConnectionFactory" 
     class="org.springframework.jms.connection.CachingConnectionFactory"> 
     <property name="targetConnectionFactory" ref="jmsFactory" /> 
     <property name="sessionCacheSize" value="1" /> 
    </bean> 
</beans> 

Und das ist es. Basierend auf dem, was ich im Internet gesehen habe, kann ich nicht sagen, ob das alles ist, was ich brauche. Vielleicht brauche ich eine andere Konfiguration in Tomcat, um den Hörer loszutreten?

Antwort

1

Das funktionierte tatsächlich. Ich habe das mit Eclipse debuggen lassen und musste ein paar Mal auffrischen, putzen und neu starten, bevor es plötzlich funktionierte.

Um meine eigene Frage zu beantworten, ist dies alles, was erforderlich ist, um einen Listener in einer Webanwendung von Tomcat aus auszuführen. Es kann vollständig nur mit XML konfiguriert werden.