Java 在spring集成中保持插座连接打开

Java 在spring集成中保持插座连接打开,java,sockets,tcp,spring-integration,Java,Sockets,Tcp,Spring Integration,SpringIntegration通过设置single use=“false”可以保持套接字连接打开。我的客户希望保持连接打开,并在同一连接上发送多个事务 以下是我计划使用的配置: <int-ip:tcp-connection-factory id="crLfServer" type="server" port="${availableServerSocket}" single-use="false" so-timeout="

SpringIntegration通过设置single use=“false”可以保持套接字连接打开。我的客户希望保持连接打开,并在同一连接上发送多个事务

以下是我计划使用的配置:

<int-ip:tcp-connection-factory id="crLfServer"
        type="server"
        port="${availableServerSocket}"
        single-use="false"
        so-timeout="10000"
        using-nio="false" 
        serializer="connectionSerializeDeserialize"
        deserializer="connectionSerializeDeserialize"
        />

    <bean id="connectionSerializeDeserialize" class="org.springframework.integration.ip.tcp.serializer.ByteArrayStxEtxSerializer"/>

如果我使用single use=“false”,只要客户端保持连接打开,连接是否打开

如果客户端在请求之间不发送数据(例如,第二个事务在30分钟后发送),是否会因为第一个请求后没有流量而关闭服务器中的连接

是否需要设置任何配置以保持连接长时间打开

请帮忙

总之,以下配置用于读取数据:

<int-ip:tcp-connection-factory id="crLfServer"
        type="server"
        port="${availableServerSocket}"
        single-use="false"
        so-timeout="0"
        using-nio="false" 
        serializer="connectionSerializeDeserialize"
        deserializer="connectionSerializeDeserialize"
        />


我想知道是什么让你以不同的方式思考。。。你发现有什么问题吗?也许你的
所以timeout=“10000”
还不够?默认情况下,它是
-1
-infinitey您是正确的。我必须设置so timeout=“0”,以便服务器读取现有连接。感谢您的帮助。这通常不是推荐的设置,除非您完全信任您的客户机-如果行为不好的客户机不关闭套接字,您最终可能会耗尽资源。这是正确的。在我的例子中,我知道只有5个客户机将被配置为使用它,而服务器运行只是为了支持它们。所有其他人都将被发送一个带有单次使用=“true”的服务器。我想知道是什么让你有不同的想法。。。你发现有什么问题吗?也许你的
所以timeout=“10000”
还不够?默认情况下,它是
-1
-infinitey您是正确的。我必须设置so timeout=“0”,以便服务器读取现有连接。感谢您的帮助。这通常不是推荐的设置,除非您完全信任您的客户机-如果行为不好的客户机不关闭套接字,您最终可能会耗尽资源。这是正确的。在我的例子中,我知道只有5个客户机将被配置为使用它,而服务器运行只是为了支持它们。所有其他服务器将发送一个一次性使用=“true”的服务器。