Well, looks like there's no way to attach files for the test case. So I'll copy and paste the code into a message instead ...
$> cat src/main/java/bat/Main.java
package bat;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main
{
public static void main( String [] args )
{
final ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext();
context.setAllowBeanDefinitionOverriding( false );
context.setConfigLocations( args );
context.refresh();
context.registerShutdownHook();
}
}
$> cat src/main/java/bat/Responder.java
package bat;
import org.apache.log4j.Logger;
public class Responder
{
final private Logger logger = Logger.getLogger( Responder.class );
public String process( String msg )
{
final String ret = msg.toUpperCase();
logger.info( "Processed message and sending response: " + ret );
return ret;
}
}
$> cat src/main/resources/context-swiftmq.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="
http://www.springframework.org/schema/beans"
xmlns:p="
http://www.springframework.org/schema/p"
xmlns:jms="
http://www.springframework.org/schema/jms"
xmlns:jee="
http://www.springframework.org/schema/jee"
xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-2.5.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd"
>
<!-- jndi access for the swiftmq server -->
<bean id="destinationResolver" class="org.springframework.jms.support.destination.JndiDestinationResolver">
<property name="jndiEnvironment">
<props>
<prop key="java.naming.factory.initial">com.swiftmq.jndi.InitialContextFactoryImpl</prop>
<prop key="java.naming.provider.url">smqp://localhost:4001/timeout=1000</prop>
</props>
</property>
</bean>
<jee:jndi-lookup id="jndiConnectionFactory" jndi-name="ConnectionFactory">
<jee:environment>
java.naming.factory.initial=com.swiftmq.jndi.InitialContextFactoryImpl
java.naming.provider.url=smqp://localhost:4001/timeout=1000
</jee:environment>
</jee:jndi-lookup>
<bean id="authConnectionFactory" class="org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter"
p:targetConnectionFactory-ref="jndiConnectionFactory"
p:username="admin"
p:password="secret" />
<!-- <bean id="connectionFactory" -->
<!-- class="com.swiftmq.jms.springsupport.SingleSharedConnectionFactory" -->
<!-- p:targetConnectionFactory-ref="authConnectionFactory" /> -->
<bean id="connectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory"
p:targetConnectionFactory-ref="authConnectionFactory"
p:cacheProducers="false"
/>
<!-- <bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory" -->
<!-- p:targetConnectionFactory-ref="authConnectionFactory" -->
<!-- /> -->
<bean id="transactionManager" class="org.springframework.jms.connection.JmsTransactionManager"
p:connectionFactory-ref="connectionFactory" />
<bean id="responder" class="bat.Responder"/>
<bean id="messageListener" class="org.springframework.jms.listener.adapter.MessageListenerAdapter"
p:defaultListenerMethod="process">
<constructor-arg ref="responder"/>
</bean>
<bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"
p:transactionManager-ref="transactionManager"
p:connectionFactory-ref="connectionFactory"
p:destinationName="testqueue"
p:destinationResolver-ref="destinationResolver"
p:messageListener-ref="messageListener"
/>
</beans>
$> cat src/main/resources/context-activemq.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="
http://www.springframework.org/schema/beans"
xmlns:p="
http://www.springframework.org/schema/p"
xmlns:jms="
http://www.springframework.org/schema/jms"
xmlns:jee="
http://www.springframework.org/schema/jee"
xmlns:amq="
http://activemq.apache.org/schema/core"
xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-2.5.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core-5.2.0.xsd"
>
<amq:broker id="amq-broker" useJmx="false" persistent="false">
<amq:transportConnectors>
<amq:transportConnector name="stomp" uri="stomp://localhost:61613"/>
<amq:transportConnector name="tcp" uri="tcp://localhost:4001"/>
</amq:transportConnectors>
</amq:broker>
<!-- jndi access for the destinations -->
<bean id="destinationResolver" class="org.springframework.jms.support.destination.JndiDestinationResolver" depends-on="amq-broker">
<property name="jndiEnvironment">
<props>
<prop key="java.naming.factory.initial">org.apache.activemq.jndi.ActiveMQInitialContextFactory</prop>
<prop key="java.naming.provider.url">vm://localhost</prop>
<prop key="queue.testqueue">testqueue</prop>
</props>
</property>
</bean>
<!-- JMS ConnectionFactory to use, configuring the embedded broker using XML -->
<amq:connectionFactory id="connectionFactory" brokerURL="vm://localhost"/>
<!-- to enable (connection / session / producer / consumer) caching, change the id of the bean
above to "amqConnectionFactory" and uncomment the bean below -->
<!-- <bean id="connectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory" -->
<!-- p:targetConnectionFactory-ref="amqConnectionFactory" -->
<!-- p:cacheProducers="false" -->
<!-- /> -->
<bean id="transactionManager" class="org.springframework.jms.connection.JmsTransactionManager"
p:connectionFactory-ref="connectionFactory" />
<bean id="responder" class="bat.Responder"/>
<bean id="messageListener" class="org.springframework.jms.listener.adapter.MessageListenerAdapter"
p:defaultListenerMethod="process">
<constructor-arg ref="responder"/>
</bean>
<bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"
p:transactionManager-ref="transactionManager"
p:connectionFactory-ref="connectionFactory"
p:destinationName="testqueue"
p:destinationResolver-ref="destinationResolver"
p:messageListener-ref="messageListener"
/>
</beans>
$> cat pom.xml
<project xmlns="
http://maven.apache.org/POM/4.0.0" xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>bat</groupId>
<artifactId>spring-replyto</artifactId>
<packaging>jar</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>spring-replyto</name>
<dependencies>
<dependency>
<groupId>javax.jms</groupId>
<artifactId>jms</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.5.6</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-core</artifactId>
<version>5.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.xbean</groupId>
<artifactId>xbean-spring</artifactId>
<version>2.8</version>
</dependency>
<dependency>
<groupId>com.swiftmq</groupId>
<artifactId>swiftmq</artifactId>
<version>7.4.1</version>
</dependency>
<dependency>
<groupId>com.swiftmq</groupId>
<artifactId>springsupport</artifactId>
<version>7.4.1</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.15</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-3</version>
<configuration>
<tarLongFileMode>gnu</tarLongFileMode>
<descriptorRefs>
<descriptor>src</descriptor>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.1</version>
</plugin>
</plugins>
</build>
<repositories>
<!-- redacted -->
</repositories>
</project>