Java spring集成tcp出界异常
我们正在使用SpringIntegration4.1.3 使用tcp出站网关实现客户端 请求期间从服务器接收到tcp rset数据包,出现异常。 原因是什么? 多谢各位Java spring集成tcp出界异常,java,spring,tcp,spring-integration,tcpclient,Java,Spring,Tcp,Spring Integration,Tcpclient,我们正在使用SpringIntegration4.1.3 使用tcp出站网关实现客户端 请求期间从服务器接收到tcp rset数据包,出现异常。 原因是什么? 多谢各位 // interface public interface TcpSendGateway { public byte[] send(String text); } // send byte[] response = sendGateway.send(request);
// interface
public interface TcpSendGateway {
public byte[] send(String text);
}
// send
byte[] response = sendGateway.send(request);
<int:gateway id="gw"
service-interface="com.mainpay.service.TcpSendGateway"
default-request-channel="input"
default-reply-channel="reply"/>
<int-tcp:tcp-connection-factory id="client"
type="client"
host="#{prop['app.cultureland.host']}"
port="#{prop['app.cultureland.port']}"
so-timeout="10000"
single-use="false"
so-keep-alive="true"
/>
<int:channel id="input" />
<int-tcp:tcp-outbound-gateway id="outGateway"
request-channel="input"
reply-channel="reply"
connection-factory="client"
request-timeout="10000"
reply-timeout="10000"
/>
<int:channel id="reply" datatype="java.lang.String" />
wireshark日志
我认为您应该确保您的客户端和服务器同意(反)序列化协议。有关更多信息,请参阅: TCP是一种流协议;这意味着必须为通过TCP传输的数据提供某种结构,以便接收方可以将数据划分为离散消息。连接工厂配置为使用(反)序列化器在消息有效负载和通过TCP发送的位之间进行转换 默认值是
ByteArrayCrLfSerializer
,它处理\r\n
消息分隔符
因此,您的客户端可能会收到该包,但由于它不符合正确的分隔符,因此在等待答复时失败。我认为您应该确保您的客户端和服务器同意(反)序列化协议。有关更多信息,请参阅: TCP是一种流协议;这意味着必须为通过TCP传输的数据提供某种结构,以便接收方可以将数据划分为离散消息。连接工厂配置为使用(反)序列化器在消息有效负载和通过TCP发送的位之间进行转换 默认值是
ByteArrayCrLfSerializer
,它处理\r\n
消息分隔符
因此,您的客户机可能会收到包,但由于它不符合正确的分隔符,因此无法等待回复
java.net.SocketException:连接重置
表示服务器出于某种原因强制关闭套接字(RST
)。您需要查看服务器日志
可能它不需要默认的有线格式(文本以CRLF
-0x0d0a
结尾)
java.net.SocketException:连接重置
表示服务器出于某种原因强制关闭套接字(RST
)。您需要查看服务器日志
可能它不希望使用默认的有线格式(文本以
CRLF
-0x0d0a
结尾)。非常感谢。你真的帮了我很多,谢谢你。你真的帮了我很多
▶ 17.09.29 17:07:37 [pool-2-thread-2] ERROR o.s.i.i.t.c.TcpNetConnection - Read exception 211.59.10.133:7611:51503:d2ec0199-fd15-49c0-bd99-0d864eb2145b SocketException:Connection reset
▶ 17.09.29 17:07:39 [http-nio-19900-exec-5] ERROR o.s.i.ip.tcp.TcpOutboundGateway - Tcp Gateway exception
org.springframework.messaging.MessagingException: Exception while awaiting reply; nested exception is java.net.SocketException: Connection reset
at org.springframework.integration.ip.tcp.TcpOutboundGateway$AsyncReply.getReply(TcpOutboundGateway.java:288)