XML 形式で応答するサーブレットがあります。
クライアントは、httpsURLConnection を介してこのサーブレットに接続します。クライアントが呼び出さない場合、問題はありますconnection.disconnect()
か?
このシナリオに従ってみましょう:
url = "https://abc.com/ws/servlet?task=login"
openconnection()...
クライアントはユーザー名とパスワードを投稿する必要があります。成功した場合、彼は のような新しいパラメーターを投稿できますtask=getSomeData,...etc
。切断する前に。
接続ごとに、クライアントは新しい httpsession になります。
クライアントが connection.dissconnect() を呼び出さない場合、セッション タイムアウト後に接続は自動的に閉じられますか? そうでない場合は、いつですか?どれくらい生きているだろう?「切断されていない」接続が非常に多い場合、サーバーの問題ですか?
更新: サンプル クライアント
HttpsURLConnection conn = null;
InputStream inputstream = null;
try{
URL url = new URL("https://abc.com/ws/servlet");
SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault();
conn = (HttpsURLConnection)url.openConnection();
conn.setSSLSocketFactory(sslsocketfactory);
inputstream = conn.getInputStream();
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(inputstream);
......;
}catch(Exception ex){
ex.printStackTrace();
}
finally{
try {
if( inputstream != null )
inputstream.close();
if( conn != null )
//conn.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
}
クライアントはタイムアウトを設定しません。この場合、このクライアントが disconnect() を呼び出さない場合、サーバーでどのタイムアウトが使用されるでしょうか? サーブレット コンテナ コネクタのタイムアウト? ただし、これを変更すると、このコンテナー内のすべてのアプリケーションに影響します。
デフォルトの Tomcat コネクタのタイムアウトは 20000 = 2 分です。これは、開いている接続を最大 2 分でしか使用できないということですか? 2 分後に自動切断されますか?
どうもありがとう。