1
を閉じて、私は次のようにTCP channel.The構成を介してリモートクライアントからの要求(パケット)を受信し、私のアプリで春の統合TcpInboundGatewayを使用しています:私の1として春の統合TcpInboundGateway:TcpNetServerConnectionFactory:サーバソケットが例外
@Bean
ByteArrayCrLfSerializer ser()
{
return new ByteArrayCrLfSerializer();
}
@Bean
TcpNetServerConnectionFactory cf(){
TcpNetServerConnectionFactory connectionFactory=new TcpNetServerConnectionFactory(45456);
connectionFactory.setSingleUse(true);
connectionFactory.setSerializer(ser());
connectionFactory.setDeserializer(ser());
return connectionFactory;
}
@Bean
TcpInboundGateway tcpGate(){
TcpInboundGateway gateway=new TcpInboundGateway();
gateway.setConnectionFactory(cf());
gateway.setRequestChannel(requestChannel());
gateway.setRequestTimeout(TIMEOUT);
return gateway;
}
@Bean
public MessageChannel requestChannel(){
return new DirectChannel();
}
をマルチスレッドをサポートする知識しかし、多くのリクエストが同時に発生すると、アプリケーションはエラーメッセージに続いて動作を停止します。
2016-06-13 06:12:52.330 INFO 1431 --- [pool-2-thread-1] .s.i.i.t.c.TcpNetServerConnectionFactory : Server Socket closed
多数の要求を同時に処理するマルチスレッドをサポートするための設定がありません。
このエラーメッセージは、接続ファクトリまたはインバウンドゲートウェイで 'stop()'を呼び出したことを意味します。 AFAIKは、サーバーソケットがその状態になる唯一の方法です。マルチスレッドを処理するために特別なことは何もありません。 –
私はstop()を呼び出すのではなく、socket.The上記のエラーメッセージの数が多いときはいつでも新しいリクエストを受け入れません。 – MasterCode
ソケットを高速で開く場合は、バックログを増やすことをお勧めします。サーバーソケットを閉じる必要はありません。接続が拒否されただけです。 –