2011-12-06 8 views
0

クライアント/サーバー通信にRMIを使用するJavaアプリケーションがあります。 この通信を保護するため、トラフィックはssh接続を通じてトンネリングされます。Java RMIソケット接続でのEOFメッセージの防止

数秒後に接続が自動的に閉じられることを除いて、すべてうまくいきます。

私は真の生きているプロパティを維持しています

  • SSHD接続
  • SSHクライアント接続
  • ServerSocketをサーバー側
  • ClientSocketクライアント側

共通接続ルーチンレジスタ(ポート4000)に接続し、オブジェクト(ポート4005)上のメソッドを呼び出すと、フォールドが出力されますログ起因:

INFO org.apache.sshd.server.session.ServerSession - Authentication succeeded 
INFO org.apache.sshd.server.session.ServerSession - Received SSH_MSG_CHANNEL_OPEN direct-tcpip 
INFO org.apache.sshd.server.channel.ChannelDirectTcpip - Receiving request for direct tcpip: hostToConnect=ThinkPad, portToConnect=4000, originatorIpAddress=127.0.0.1, originatorPort=64539 
INFO org.apache.sshd.server.session.ServerSession - Received SSH_MSG_CHANNEL_OPEN direct-tcpip 
INFO org.apache.sshd.server.channel.ChannelDirectTcpip - Receiving request for direct tcpip: hostToConnect=ThinkPad, portToConnect=4005, originatorIpAddress=127.0.0.1, originatorPort=64540 
INFO org.apache.sshd.server.channel.ChannelDirectTcpip - Received SSH_MSG_CHANNEL_EOF on channel 1 
INFO org.apache.sshd.server.channel.ChannelDirectTcpip - Send SSH_MSG_CHANNEL_CLOSE on channel 1 
INFO org.apache.sshd.server.channel.ChannelDirectTcpip - Received SSH_MSG_CHANNEL_CLOSE on channel 1 
INFO org.apache.sshd.server.channel.ChannelDirectTcpip - Closing channel 1 immediately 
INFO org.apache.sshd.server.channel.ChannelDirectTcpip - Closing channel 1 immediately 
INFO org.apache.sshd.server.channel.ChannelDirectTcpip - Send SSH_MSG_CHANNEL_EOF on channel 1 
INFO org.apache.sshd.server.session.ServerSession - Closing session 
INFO org.apache.sshd.server.channel.ChannelDirectTcpip - Closing channel 0 immediately 
INFO org.apache.sshd.server.channel.ChannelDirectTcpip - Closing channel 0 immediately 
INFO org.apache.sshd.server.channel.ChannelDirectTcpip - Send SSH_MSG_CHANNEL_EOF on channel 0 

**チャネル1上SSH_MSG_CHANNEL_EOFを受信ラインは、オブジェクト上に呼び出されたメソッドは、EOFメッセージを生成したことを示唆しています。

  • インターセプトまたはEOFメッセージ(ただし、どこで、どのように?)
  • は、サーバー側のSessionFactoryを設定してみ防ぐ:これは、その後...私は考えることができる

    可能な解決策を閉じるためにセッションを引き起こし(誤っていると感じる)

+0

[このサイト](http://www.networkdictionary.com/rfc/rfc4254.php?page=0%2C2)* EOF *はこの接続を終了させて​​はなりません。 – srkavin

+0

また、そのサイトSSH_MSG_CHANNEL_CLOSEが確かにそれを閉じて、それが送信されているとしても。 – EJP

+0

サーバーがEOFメッセージを受信し、CLOSEメッセージで応答した後、サーバーがEOF自体を送信するように見えます。私は最初に受信したEOFが、クライアント側のチャネルを閉じた後に送信され、これがどのように防止できるのか疑問に思います。 –

答えて

0

RMI接続はクライアントでプールされ、15秒以内に再使用されないと閉じられます。この動作は、システムのプロパティを使用して調整できます.RMIのホームページからリンクされているSunシステムのプロパティページを参照してください。

+0

ゴールデンチップのEJPに感謝します。問題は、クライアント側のonelinerで解決できます。 System.setProperty( "sun.rmi.transport.connectionTimeout"、 "3600000"); –