1

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 分後に自動切断されますか?

どうもありがとう。

4

1 に答える 1