JmsGateway now supports configuration of the 'transactionManager' to be set on the MessageListener container, and the <jms-gateway/> element now accepts a "transaction-manager" attribute for the bean reference (INT-237).

This commit is contained in:
Mark Fisher
2008-06-02 19:24:00 +00:00
parent aab138cb10
commit 9567dc513d
5 changed files with 73 additions and 0 deletions

View File

@@ -18,6 +18,7 @@ package org.springframework.integration.adapter.jms.config;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import org.junit.Test;
@@ -29,6 +30,7 @@ import org.springframework.integration.adapter.jms.JmsGateway;
import org.springframework.integration.channel.MessageChannel;
import org.springframework.integration.channel.QueueChannel;
import org.springframework.integration.message.Message;
import org.springframework.jms.connection.JmsTransactionManager;
/**
* @author Mark Fisher
@@ -140,4 +142,25 @@ public class JmsGatewayParserTests {
context.stop();
}
@Test
public void testTransactionManagerIsNullByDefault() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
"jmsGatewayTransactionManagerTests.xml", this.getClass());
JmsGateway gateway = (JmsGateway) context.getBean("gatewayWithoutTransactionManager");
DirectFieldAccessor accessor = new DirectFieldAccessor(gateway);
assertNull(accessor.getPropertyValue("transactionManager"));
}
@Test
public void testGatewayWithTransactionManagerReference() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
"jmsGatewayTransactionManagerTests.xml", this.getClass());
JmsGateway gateway = (JmsGateway) context.getBean("gatewayWithTransactionManager");
DirectFieldAccessor accessor = new DirectFieldAccessor(gateway);
Object txManager = accessor.getPropertyValue("transactionManager");
assertEquals(JmsTransactionManager.class, txManager.getClass());
assertEquals(context.getBean("txManager"), txManager);
assertEquals(context.getBean("testConnectionFactory"), ((JmsTransactionManager) txManager).getConnectionFactory());
}
}

View File

@@ -0,0 +1,37 @@
<?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:si="http://www.springframework.org/schema/integration"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/integration
http://www.springframework.org/schema/integration/spring-integration-1.0.xsd">
<si:channel id="requestChannel"/>
<si:jms-gateway id="gatewayWithoutTransactionManager"
connection-factory="testConnectionFactory"
destination="testDestination"
request-channel="requestChannel"/>
<si:jms-gateway id="gatewayWithTransactionManager"
connection-factory="testConnectionFactory"
destination="testDestination"
request-channel="requestChannel"
transaction-manager="txManager"/>
<bean id="txManager" class="org.springframework.jms.connection.JmsTransactionManager">
<property name="connectionFactory" ref="testConnectionFactory"/>
</bean>
<bean id="testConnectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">
<constructor-arg>
<bean class="org.springframework.integration.adapter.jms.StubConnection">
<constructor-arg value="message-driven-test"/>
</bean>
</constructor-arg>
</bean>
<bean id="testDestination" class="org.springframework.integration.adapter.jms.StubDestination"/>
</beans>