使用Spring Integration with Atomikos进行事务(JMS和DB)时出现异常



当使用带有spring集成的atomicos事务管理器时,我得到以下异常

14:36:18.182 DEBUG〔main〕〔org.springframework.integration.jms.JmsSendingMessageHandler〕org.springfframework.integrate.jms.jmsSendingMessage Handler#0收到消息:〔Payload=EmployeeRecord{name='Rmex123',address=Phoenix,AZ}〕〔Headers={timestamp=1403732178182,id=95b13ba2-3b22-4724-8d8d-d3d98c39a694}〕14:36:18.241 WARN[main][com.atomicos.jms.ConsumerProducerSupport]用于ActiveMQMessageProducer的atomicos MessageProducer代理{value=ID:PHXJ05376352-13260-1403732176990-1:1:2:1}:您正在使用的jms会话需要用于调用线程的JTA事务上下文,但未找到。请更正您的代码以执行以下操作之一:1.如果您希望JMS操作服从JTA提交/回滚,则启动JTA事务,或者2.增加AtomikosConnectionFactoryBean的maxPoolSize,以避免在等待连接时事务超时,或者3.创建一个非事务会话,并自己进行会话确认,或者4.将localTransactionMode设置为true,以便启用连接级别的提交/回滚。14:36:18.242 WARN[main][com.atomicos.jms.AtomikosTransactionRequiredJMSException]您正在使用的jms会话需要用于调用线程的JTA事务上下文,但没有找到。请更正您的代码以执行以下操作之一:1.如果您希望JMS操作服从JTA提交/回滚,则启动JTA事务,或者2.增加AtomikosConnectionFactoryBean的maxPoolSize,以避免在等待连接时事务超时,或者3.创建一个非事务会话,并自己进行会话确认,或者4.将localTransactionMode设置为true,以便启用连接级别的提交/回滚。线程"main"org.springframework.integration.MessageHandlingException异常:消息处理程序[org.springfframework.integrate.jms.JmsSendingMessageHandler#0]中发生错误在org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:79)

我这里遗漏了什么吗?我需要显式启动JTA事务吗请帮助解决此

<context:component-scan base-package="com.mycompany.poc.sif" />
<int:publish-subscribe-channel id="reqChannel"/> 
<int:channel id="jmsChannel" />

<int:service-activator   input-channel="inChannel" ref="serviceHandler" output-channel="inUnmarshalChannel" />
<!-- To convert incoming XML to EmployeeRecord -->
<int-xml:unmarshalling-transformer unmarshaller="unMarshaller" input-channel="inUnmarshalChannel" output-channel="reqChannel"/>
<!-- To perform Database insert  -->
<jdbc:outbound-channel-adapter channel="reqChannel" query="insert into EMPLOYEERECORD(name,address) values (:payload.name, :payload.address)" data-source="atomikos.dataSource" />
<!-- To perform JMS Queue send   -->
<int:object-to-string-transformer input-channel="reqChannel" output-channel="jmsChannel"/>
<jms:outbound-channel-adapter id="jms" jms-template="jmsTemplate" channel="jmsChannel" /> 
<!-- To perform BG check Service Call    -->
<int:transformer ref="bgCheckTransformerBean" input-channel="reqChannel" output-channel="headerChannel"/>
<ws:header-enricher input-channel="headerChannel" output-channel="wsChannel">
<ws:soap-action value="http://www.example.org/wspBackGroundcheckService/backGroundCheck" />
</ws:header-enricher>
<ws:outbound-gateway id="bgcheckGateway" request-channel="wsChannel" reply-channel="outChannel"
marshaller="jaxbMarshaller" unmarshaller="jaxbMarshaller" uri="http://host1:3057/BackGroundcheckService" />
<int:header-filter header-names="ws_soapAction" input-channel="outChannel" output-channel="respChannel" />
<int:transformer ref="responseTransformerBean" input-channel="respChannel" output-channel="endChannel"/>
<!--    Bean definitions -->
<beans:bean id="serviceHandler" class="com.mycompany.poc.sif.service.EmpOnboardService" />
<beans:bean id="jaxbMarshaller"
class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<beans:property name="contextPaths"
value="org.example.backgroundcheckservice" />
<beans:property name="checkForXmlRootElement" value="false" />
</beans:bean>
<beans:bean id="unMarshaller"
class="org.springframework.oxm.castor.CastorMarshaller">
<beans:property name="mappingLocation" value="classpath:mapping.xml" />
</beans:bean>
<beans:bean id="payloadTransformerBean"
class="com.mycompany.poc.sif.transformer.PayloadTransformer" />
<beans:bean id="bgCheckTransformerBean"
class="com.mycompany.poc.sif.transformer.BGCheckTransformer" />
<beans:bean id="responseTransformerBean"
class="com.mycompany.poc.sif.transformer.ResponseTransformer" />

<beans:bean id="db2.datasource" class="com.ibm.db2.jcc.DB2XADataSource">
<beans:property name="serverName" value="hostname" />
<beans:property name="portNumber" value="1234" />
<beans:property name="databaseName" value="ADB" />
<beans:property name="driverType" value="4" />
<beans:property name="user" value="user" />
<beans:property name="password" value="passwd" />
</beans:bean>


<!--     Define JMS template -->        
<beans:bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<beans:property name="connectionFactory" ref="atomikos.connectionFactory"></beans:property>
<beans:property name="defaultDestination" ref="requestQueue"></beans:property>
<beans:property name="sessionTransacted" value="true"></beans:property>
</beans:bean>  

<beans:bean id="requestQueue" class="org.apache.activemq.command.ActiveMQQueue">
<beans:constructor-arg value="queue.sif"/>
</beans:bean>

<!--     Define Transaction Manager and User Transaction -->
<beans:bean id="jta.transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
<beans:property name="transactionManager" ref="atomikos.transactionManager"/>
<beans:property name="userTransaction" ref="atomikos.userTransaction"/>
</beans:bean>
<!-- javax.transaction.TransactionManager -->
<beans:bean id="atomikos.transactionManager" class="com.atomikos.icatch.jta.UserTransactionManager"
init-method="init" destroy-method="close">
<beans:property name="forceShutdown" value="false"/>
</beans:bean>
<!-- javax.transaction.UserTransaction -->
<beans:bean id="atomikos.userTransaction"
class="com.atomikos.icatch.jta.UserTransactionImp">
<beans:property name="transactionTimeout" value="3000"/>
</beans:bean>
<!--Wrap the JMS here-->
<!-- Atomikos JTA configuration, nothing specific to Spring here -->
<beans:bean id="atomikos.connectionFactory" class="com.atomikos.jms.AtomikosConnectionFactoryBean"
init-method="init" destroy-method="close">
<beans:property name="uniqueResourceName" value="xa.activemq"/>
<beans:property name="xaConnectionFactory" ref="xa.connectionFactory"/>
<beans:property name="localTransactionMode" value="false"/>
<!-- XAConnectionFactory -->
<beans:property name="maxPoolSize" value="10"/>
</beans:bean>
<beans:bean id="xa.connectionFactory" class="org.apache.activemq.ActiveMQXAConnectionFactory">
<beans:property name="brokerURL" value="tcp://localhost:61616"/>
<beans:property name="userName" value="admin"/>
<beans:property name="password" value="admin"/>
</beans:bean>
<!-- Wrap the DB datasources-->
<beans:bean id="atomikos.dataSource" class="com.atomikos.jdbc.AtomikosDataSourceBean">
<beans:property name="uniqueResourceName" value="xa.db2"/>
<beans:property name="xaDataSource" ref="db2.datasource"/>
<!-- XADataSource -->
</beans:bean>
<stream:stdout-channel-adapter id="endChannel" />

错误


:16:14.486 DEBUG[main][org.springframework.integration.cohannel.DirectChannel]pre在信道"inUnmarshalChannel"上发送,消息:[PPayload=Rmex 123Phoenix,AZ][Headers={timestamp=1403738174485,id=5cdf38dc-1c45-4392-a7c7-7b2caf586701}]16:16:14.486 DEBUG[main][org.springframework.integration.transformer.MessageTransformingHandler]org.springfframework.integation.transformr.MessageTransformingHandler#0收到消息:[PPayload=Rmex 123Phoenix,AZ][Headers={timestamp=1403738174485,id=5cdf38dc-1c45-4392-a7c7-7b2caf586701}]16:16:14.496 DEBUG[main][org.springframework.integration.transformer.MessageTransformingHandler]handler"org.springfframework.integation.transformer.MessageTransformingHandler#0"发送回复消息:[PPayload=EmployeeRecord{name='Rmex123',address=Phoenix,AZ}][Headers={timestamp=1403738174496,id=93d53947-5564-4bf1-bc7c-a4471c185b88}]16:16:14.496 DEBUG[main][org.springframework.integration.cohannel.PublishSubscribeChannel]preSend on channel'reqChannel',message:[PPayload=EmployeeRecord{name='Rmex123',address=Phoenix,AZ}][Headers={timestamp=1403738174496,id=93d53947-5564-4bf1-bc7c-a4471c185b88}]16:16:14.496调试[main][org.springframework.integration.JdbcMessageHandler]org.springfframework.integation.jdbcMessage处理程序#0收到消息:[PPayload=EmployeeRecord{name='Rmex123',address=Phoenix,AZ}][Headers={timestamp=1403738174496,id=93d53947-5564-4bf1-bc7c-a4471c185b88}]16:16:14.517警告[main][com.atomicos.jdbc.AbstractDataSourceBean]AtomikosDataSoureBean'xa.db2':poolSize等于默认值-这可能会导致性能问题!16:16:15.758调试[main][org.springframework.integration.jdbc.JdbcMessageHandler]生成的密钥:[{UPDATED=1}]16:16:15.758 DEBUG[main][org.springframework.integration.transfer.MessageTransformingHandler]org.springfframework.integation.transfer.MessageTransformingHandler#1收到消息:[PPayload=EmployeeRecord{name='Rmex123',address=Phoenix,AZ}][Headers={timestamp=1403738174496,id=93d53947-5564-4bf1-bc7c-a4471c185b88}]16:16:15.758 DEBUG[main][org.springframework.integration.transformer.MessageTransformingHandler]handler"org.springfframework.integation.transformer.MessageTransformingHandler#1"发送回复消息:[PPayload=EmployeeRecord{name='Rmex123',address=Phoenix,AZ}][Headers={timestamp=1403738175758,id=809a9316-3c1d-474c-879f-eddbbb82fb2f}16:16:15.758 DEBUG[main][org.springframework.integration.cohannel.DirectChannel]preSend on channel'jmsChannel',message:[PPayload=EmployeeRecord{name='Rmex123',address=Phoenix,AZ}][Headers={timestamp=1403738175758,id=809a9316-3c1d-474c-879f-eddbbb82fb2f}16:16:15.758调试[main][org.springframework.integration.jms.JmsSendingMessageHandler]org.springfframework.integation.jms.jmsSendingMessage处理程序#0收到消息:[PPayload=EmployeeRecord{name='Rmex123',address=Phoenix,AZ}][Headers={timestamp=1403738175758,id=809a9316-3c1d-474c-879f-eddbbb82fb2f}16:16:15.809 WARN[main][com.atomicos.jms.ConsumerProducerSupport]用于ActiveMQMessageProducer的atomicos MessageProducer代理{value=ID:PHXJ05376352-15248-1403738173579-1:1:2:1}:您正在使用的jms会话需要用于调用线程的JTA事务上下文,但未找到任何事务上下文。请更正您的代码以执行以下操作之一:1.如果您希望JMS操作服从JTA提交/回滚,则启动JTA事务,或者2.增加AtomikosConnectionFactoryBean的maxPoolSize,以避免在等待连接时事务超时,或者3.创建一个非事务会话,并自己进行会话确认,或者4.将localTransactionMode设置为true,以便启用连接级别的提交/回滚。16:16:15.809 WARN[main][com.atomicos.jms.AtomikosTransactionRequiredJMSException]您正在使用的jms会话需要用于调用线程的JTA事务上下文,但未找到。请更正您的代码以执行以下操作之一:1.如果您希望JMS操作服从JTA提交/回滚,则启动JTA事务,或者2.增加AtomikosConnectionFactoryBean的maxPoolSize,以避免在等待连接时事务超时,或者3.创建一个非事务会话,并自己进行会话确认,或者4.将localTransactionMode设置为true,以便启用连接级别的提交/回滚。线程"main"org.springframework.integration.MessageHandlingException异常:消息处理程序[org.springfframework.integrate.jms.JmsSendingMessageHandler#0]中发生错误位于org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:79)网址:org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:115)网址:org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch(UnicastingDispatcher.java:102)网址:org.springframework.integration.cohannel.AbstractSubscribeChannel.doSend(AbstractSubscribeChannel.java:77)网址:org.springframework.integration.cohannel.AbstractMessageChannel.send(AbstractMessageChanel.java:157)网址:org.springframework.integration.channe.AbstractMessageChannel.send(AbstractMessage channel.java:128)网址:org.springframework.integration.core.MessagingTemplate.doSend(MessagingTemplate.java:288)网址:org.springframework.integration.core.MessagingTemplate.send(MessagingTemplate.java:149)位于org.springframework.integration.handler.AbstractReplyProducingMessageHandler.sendMessage(AbstractReplyPProducingMessageHandler.java:216)位于org.springframework.integration.handler.AbstractReplyProducingMessageHandler.sendReplyMessage(AbstractReplyPProducingMessageHandler.java:200)位于org.springframework.integration.handler.AbstractReplyProducingMessageHandler.produceReply(AbstractReplyPProducingMessageHandler.java:165)位于org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleResult(AbstractReplyPProducingMessageHandler.java:159)位于org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyPProducingMessageHandler.java:141)位于org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:73)位于org.springframework.integration.dispatcher.BroadcastingDispatcher.invokeHandler(BroadcastingDispatcher.java:121)位于org.springframework.integration.dispatcher.BroadcastingDispatcher.dispatch(BroadcastingDispatcher.java:112)网址:org.springframework.integration.cohannel.AbstractSubscribeChannel.doSend(AbstractSubscribeChannel.java:77)网址:org.springframework.integration.cohannel.AbstractMessageChannel.send(AbstractMessageChanel.java:157)网址:org.springframework.integration.channe.AbstractMessageChannel.send(AbstractMessage channel.java:128)网址:org.springframework.integration.core.MessagingTemplate.doSend(MessagingTemplate.java:288)网址:org.springframework.integration.core.MessagingTemplate.send(MessagingTemplate.java:149)位于org.springframework.integration.handler.AbstractReplyProducingMessageHandler.sendMessage(AbstractReplyPProducingMessageHandler.java:216)位于org.springframework.integration.handler.AbstractReplyProducingMessageHandler.sendReplyMessage(AbstractReplyPProducingMessageHandler.java:200)位于org.springframework.integration.handler.AbstractReplyProducingMessageHandler.produceReply(AbstractReplyPProducingMessageHandler.java:165)位于org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleResult(AbstractReplyPProducingMessageHandler.java:159)位于org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyPProducingMessageHandler.java:141)位于org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:73)网址:org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:115)网址:org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch(UnicastingDispatcher.java:102)网址:org.springframework.integration.cohannel.AbstractSubscribeChannel.doSend(AbstractSubscribeChannel.java:77)网址:org.springframework.integration.cohannel.AbstractMessageChannel.send(AbstractMessageChanel.java:157)网址:org.springframework.integration.channe.AbstractMessageChannel.send(AbstractMessage channel.java:128)网址:org.springframework.integration.core.MessagingTemplate.doSend(MessagingTemplate.java:288)网址:org.springframework.integration.core.MessagingTemplate.send(MessagingTemplate.java:149)位于org.springframework.integration.handler.AbstractReplyProducingMessageHandler.sendMessage(AbstractReplyPProducingMessageHandler.java:216)位于org.springframework.integration.handler.AbstractReplyProducingMessageHandler.sendReplyMessage(AbstractReplyPProducingMessageHandler.java:200)位于org.springframework.integration.handler.AbstractReplyProducingMessageHandler.produceReply(AbstractReplyPProducingMessageHandler.java:165)位于org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleResult(AbstractReplyPProducingMessageHandler.java:159)位于org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyPProducingMessageHandler.java:141)位于org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:73)网址:org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:115)网址:org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch(UnicastingDispatcher.java:102)网址:org.springframework.integration.cohannel.AbstractSubscribeChannel.doSend(AbstractSubscribeChannel.java:77)网址:org.springframework.integration.cohannel.AbstractMessageChannel.send(AbstractMessageChanel.java:157)网址:org.springframework.integration.channe.AbstractMessageChannel.send(AbstractMessage channel.java:128)网址:com.amex.poc.sif.main.TransactionTestApp.main(TransactionTestApp.java:29)由:org.springframework.js.UncacategorizedJmsException引起:jms处理过程中发生未分类异常;嵌套异常是com.atomicos.jms.AtomikosTransactionRequiredJMSException:您正在使用的jms会话需要调用线程的JTA事务上下文,但没有找到。请更正您的代码以执行以下操作之一:1.如果您希望JMS操作服从JTA提交/回滚,则启动JTA事务,或者2.增加AtomikosConnectionFactoryBean的maxPoolSize,以避免在等待连接时事务超时,或者3.创建一个非事务会话,并自己进行会话确认,或者4.将localTransactionMode设置为true,以便启用连接级别的提交/回滚。位于org.springframework.jms.support.JmsUtils.convertJmsAccessException(JmsUtils.java:316)位于org.springframework.jms.support.JmsAccessor.convertJmsAccessException(JmsAccessor.java:169)在org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:494)网址:org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:566)网址:org.springframework.jms.core.JmsTemplate.covertAndSend(JmsTemplate.java:689)网址:org.springframework.jms.core.JmsTemplate.covertAndSend(JmsTemplate.java:677)位于org.springframework.integration.jms.JmsSendingMessageHandler.send(JmsSenddingMessageHandler.java:145)位于org.springframework.integration.jms.JmsSendingMessageHandler.handleMessageInternal(JmsSenddingMessageHandler.java:112)位于org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:73)…还有45由com.atomicos.jms.AtomikosTransactionRequiredJMSException引起:您正在使用的jms会话需要调用线程的JTA事务上下文,但未找到。请更正您的代码以执行以下操作之一:1.如果您希望JMS操作服从JTA提交/回滚,则启动JTA事务,或者2.增加AtomikosConnectionFactoryBean的maxPoolSize,以避免在等待连接时事务超时,或者3.创建一个非事务会话,并自己进行会话确认,或者4.将localTransactionMode设置为true,以便启用连接级别的提交/回滚。在com.atomicos.jms.AtomikosTransactionRequiredJMSException.sthrowAtomikosTransactionRequiredJMSE exception(AtomikosStransactionRequiredjmSException.java:40)网址:com.atomicos.jms.ConsumerProducerSupport.resolit(ConsumerProducerSupport.java:112)网址:com.atomicos.jms.AtomikosJmsMessageProducerProxy.send(AtomikosJmsMessageProductierProxy.java:52)网址:com.atomicos.jms.AtomikosJmsMessageProducerProxy.send(AtomikosJmsMessageProductierProxy.java:133)网址:org.springframework.jms.core.JmsTemplate.doSend(JmsTemplate.java:633)位于org.springframework.jms.core.JmsTemplate.doSend(JmsTemplate.java:604)网址:org.springframework.jms.core.JmsTemplate$3.doInJms(JmsTemplate.java:569)在org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:491)…再51这是我将消息传递到通道的主要方法************************************************************public static void main(String[]args){final String[]configFiles={"/META-INF/spring/integration/spring integration context standalone.xml"};ClassPathXmlApplicationContext上下文=new ClassPathXmlApplicationContext(configFiles,TransactionTestApp.class);BeanFactoryChannelResolver channelResolver=新的BeanFactoryCannelResolver(上下文);//根据服务器的架构编写XML消息字符串requestXml="+"费率123"+"亚利桑那州凤凰城"+";//创建Message对象//org.springframework.integration.Message Message=MessageBuilder.withPayload(requestXml).build();org.springframework.integration.Message Message=MessageBuilder.withPayload(requestXml).build();//将消息发送到处理程序的输入通道org.springframework.integration.MessageChannel channel=channelResolver.resolveChannelName("inChannel");channel.send((org.springframework.integration.Message)消息);}

您需要启动事务。

与其简单地将消息发送到inChannel,不如考虑使用消息网关;将其注释为@Transactional,并且框架将启动事务。

如果必须发送到通道,请在TransactionTemplate.execute()方法中执行。

编辑:

如果流以轮询的入站适配器开始,请使用<transactional/>标记轮询器。

如果流以非事务性消息驱动适配器(例如,WS、HTTP)开始,则需要插入事务性网关来确定事务的范围。。。

public interface TxGate {
@Transactional
Message<?> exchange(Message<?> message);
}
<int-ws:inbound-gateway ... requestChannel="startTx" ... />
<int:service-activator input-channel="startTx" ref="txGate" />
<int:gateway id="txGate" request-channel="onward" service=interface="foo.TxGate" />
尝试执行上述操作时出错*************************************\15:09:03.664 INFO[main][org.springframework.integration.gateway.GatewayProxyFactoryBean$MethodInvocationGateway]已启动登录服务15:09:03.664 INFO[main][org.springframework.integration.gateway.GatewayProxyFactoryBean]已启动登录服务15:09:03.695调试[main][org.springframework.integration.util.MessagingMethodInvokerHelper]方法[public final void com.sun.proxy.$Proxy21.addAdvice(int,org.aopalliance.aop.Advice)throws org.springfframework.aop.framework.AoPonfigException]不符合消息处理条件。java.lang.IollegalArgumentException:找到多个候选参数类型:[int]和[org.aopalliance.aop.Advice]位于org.springframework.util.Assert.isNull(Assert.java:89)位于org.springframework.integration.util.MessagingMethodInvokerHelper$HandlerMethod.setExclusiveTargetParameterType(MessagingMethodInvokerHelper.java:624)位于org.springframework.integration.util.MessagingMethodInvokerHelper$HandlerMethod.generateExpression(MessagingMethodInvokerHelper.java:558)位于org.springframework.integration.util.MessagingMethodInvokerHelper$HandlerMethod。(MessagingMethodInvokerHelper.java:440)位于org.springframework.integration.util.MessagingMethodInvokerHelper$1.doWith(MessagingMethodInvokerHelper.java:302)网址:org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:480)位于org.springframework.integration.util.MessagingMethodInvokerHelper.findHandlerMethodsForTarget(MessagingMethodInvokerHelper.java:276)位于org.springframework.integration.util.MessagingMethodInvokerHelper。(MessagingMethodInvokerHelper.java:169)位于org.springframework.integration.util.MessagingMethodInvokerHelper。(MessagingMethodInvokerHelper.java:121)网址:org.springframework.integration.util.MessagingMethodInvokerHelper。(MessagingMethodInvokerHelper.java:116)位于org.springframework.integration.handler.MethodInvokingMessageProcessor。(MethodInvokingMessageProcessor.java:56)网址:org.springframework.integration.handler.ServiceActivatingHandler。(ServiceActivatingHandler.java:35)位于org.springframework.integration.config.ServiceActivatorFactoryBean.createMethodInvokingHandler(ServiceActivatorFactoryBean.java:48)位于org.springframework.integration.config.AbstractStandardMessageHandlerFactoryBean.createHandler(AbstractStandard MessageHandlerfactoryBean.java:72)位于org.springframework.integration.config.AbstractSimpleMessageHandlerFactoryBean.createHandlerInternal(AbstractSimpleMessageHandlerFactoryBean.java:99)在org.springframework.integration.config.AbstractSimpleMessageHandlerFactoryBean.getObject(AbstractSimpleMessageHandlerFactoryBean.java:81)

method="exchange"添加到服务激活器应该可以解决这个问题。

最新更新