首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring集成不响应

Spring集成不响应
EN

Stack Overflow用户
提问于 2016-03-15 11:51:46
回答 1查看 242关注 0票数 0

我使用Spring Integration来处理服务器和客户端之间的自定义TCP协议。这是我的context.xml:

代码语言:javascript
复制
<int-ip:tcp-connection-factory id="serverConnectionFactory"
                               type="server"
                               host=""
                               port="5678"
                               so-linger="5000"
                               so-keep-alive="true"
                               single-use="false"
                               using-nio="true"
                               so-timeout="5000"
                               serializer="customeMessageSerializerDeserializer"
                               deserializer="customeMessageSerializerDeserializer"/>

<int-ip:tcp-inbound-channel-adapter id="inAdapter.server"
                                    channel="toSA"
                                    connection-factory="serverConnectionFactory"/>

<int:channel id="toSA" datatype="com.my.Message"/>

<int:service-activator input-channel="toSA"
                       output-channel="toObAdapter"
                       ref="handleMessage"
                       method="handle"/>

<int:channel id="toObAdapter"/>

<int-ip:tcp-outbound-channel-adapter id="outAdapter.server"
                                     channel="toObAdapter"
                                     connection-factory="serverConnectionFactory"/>

<bean id="handleMessage" class="com.my.MessageHandler"/>
<bean id="customeMessageSerializerDeserializer"
      class="com.my.MessageSerializyerDeserializer"/>

当我通过tomcat部署它时,它工作了几分钟,并且对客户端没有响应。发现一个错误:

代码语言:javascript
复制
org.springframework.messaging.MessageHandlingException: Unable to find outbound socket
at      org.springframework.integration.ip.tcp.TcpSendingMessageHandler.handleMessageInternal(  TcpSendingMessageHandler.java:122)
at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:127)
at org.springframework.integration.dispatcher.AbstractDispatcher.tryOptimizedDispatch(AbstractDispatcher.java:116)
at org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:147)
at org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch(UnicastingDispatcher.java:120)
at org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:77)
at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:442)
at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:392)
at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:115)
at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:45)
at org.springframework.messaging.core.AbstractMessageSendingTemplate.send(AbstractMessageSendingTemplate.java:105)
at org.springframework.integration.handler.AbstractMessageProducingHandler.sendOutput(  AbstractMessageProducingHandler.java:231)
at org.springframework.integration.handler.AbstractMessageProducingHandler.produceOutput(  AbstractMessageProducingHandler.java:154)
at org.springframework.integration.handler.AbstractMessageProducingHandler.sendOutputs(  AbstractMessageProducingHandler.java:102)
at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(  AbstractReplyProducingMessageHandler.java:105)
at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:127)
at org.springframework.integration.dispatcher.AbstractDispatcher.tryOptimizedDispatch(AbstractDispatcher.java:116)
at org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:147)
at org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch(UnicastingDispatcher.java:120)
at org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:77)
at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:442)
at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:392)
at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:115)
at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:45)
at org.springframework.messaging.core.AbstractMessageSendingTemplate.send(AbstractMessageSendingTemplate.java:105)
at org.springframework.integration.endpoint.MessageProducerSupport.sendMessage(MessageProducerSupport.java:105)
at org.springframework.integration.ip.tcp.TcpReceivingChannelAdapter.onMessage(TcpReceivingChannelAdapter.java:87)
at org.springframework.integration.ip.tcp.connection.TcpNioConnection.sendToChannel(TcpNioConnection.java:370)
at org.springframework.integration.ip.tcp.connection.TcpNioConnection.run(TcpNioConnection.java:239)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

我想知道如何修复它,以及它哪里错了。

EN

回答 1

Stack Overflow用户

发布于 2016-03-15 21:38:58

使用collaborating channel adapters时,必须确保在出站消息中设置ip_connectionId标头,以便适配器知道要将其写入哪个套接字。

通常,对于这样一个简单的流,框架将负责将报头从入站消息传播到出站消息。

所以我需要看到这个方法来看看你在做什么。

你的“handleMessage`”代码是什么样子的?

另一种可能是5秒超时-如果您的服务花费的时间超过5秒,则连接将不再存在。

通常,打开调试日志记录应该有助于调试这样的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36002380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档