私は、リモートクライアントからの接続を受け入れ、可能な限り数時間または数日間接続を維持するTomcat 7サーブレットを持っています。したがって、私たちはNIOコネクタを使用しています。 物理接続の帯域幅は高価な場合があるため、トラフィックは絶対最小限に抑える必要があります。したがって、非常にまれなpingで接続をテストするようにリモートクライアントをプログラムしました。Tomcat 7サーブレットは永続的なNIO接続を強制的に閉じる必要があります
サーブレットに接続が閉じられていると伝えられることもありますが、リモートクライアントには通知されていないようです。クライアントは、pingを実行するまで、新しい接続を確立することはできません。 pingを増やすことなく、クライアントが接続されていない時間を短縮する必要があります。
1つの方法は、Tomcatサーバーをシャットダウンすることです。クライアントはすぐに切断されることを知っています。明らかに私たちはTomcatをシャットダウンしたくありません - 私の要点は、通常静かな接続を介して何らかの信号を送信する必要があることです。
Tomcatにこの信号を送信させるにはどうすればよいですか?私がそれを信じることができなかった理由と、それが信じたくないことが主な理由のために、なぜ具体的な理由があるのかを教えてくれることができない限り、奇妙に思える - 誰かに電話を掛けることができないように。
代替質問#1 - サーブレットは接続が解除されたことを通知することはできますか?
替わりの質問#2 - 誰でも助けてくれると思いますか?
Stu - ご協力いただきありがとうございます。私はクライアントが気づいていないことにも驚いています。 Tomcatは、サーブレットが認識している情報を渡していないようです。私はクライアント側で何が起こっているのか分かっていません。 Tomcatとクライアントの間に評判の良い携帯電話サービスプロバイダがあり、私はそれが何をしているのか分からない。 – DaveWalley
(私もまた)ネットワークが私の強い訴訟ではないことが分かっていれば、TCP/IP上でさらに診断を行います。私たちはWireSharkを使用しましたが、私が見ているものは本当にわかりません。私はサーバープッシュにNIOを使用しなければならないと思っていました。スピードアップするためのサンプルコードやチュートリアルを教えてください。 – DaveWalley
@Dave:これはモバイルネットワーク上のすべてですか?私は実際には、UDPや限られた期間の長いポーリングのような別のアプローチを提案しています。 Tomcatは、その日の終わりにHTTPサーバーであることに注意してください。 HTTPはステートレスの要求/応答プロトコルです。あなたがスイートHTTPをうまくやっているようには聞こえません。 * "適切な仕事のための適切なツール" *ネットワーク診断ツールに関しては、netstatのようなより簡単なユーティリティから始めます。 Wireshareは本当に重いものです。 –