Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java HTTP客户端必须关闭其连接吗_Java_Servlets_Disconnect_Httpsurlconnection - Fatal编程技术网

Java HTTP客户端必须关闭其连接吗

Java HTTP客户端必须关闭其连接吗,java,servlets,disconnect,httpsurlconnection,Java,Servlets,Disconnect,Httpsurlconnection,我有一个servlet,它以XML格式响应 客户端通过httpsURLConnection连接到此servlet。 现在,如果客户端不调用connection.disconnect() 让我们遵循以下场景: url = "https://abc.com/ws/servlet?task=login" openconnection()... 现在客户端必须发布用户名和密码,如果成功,他可以发布新的参数,如task=getSomeData。在断开之前 对于每个连接,客户端都成为新的httpsess

我有一个servlet,它以XML格式响应

客户端通过httpsURLConnection连接到此servlet。 现在,如果客户端不调用
connection.disconnect()

让我们遵循以下场景:

url = "https://abc.com/ws/servlet?task=login"

openconnection()...
现在客户端必须发布用户名和密码,如果成功,他可以发布新的参数,如
task=getSomeData。在断开之前

对于每个连接,客户端都成为新的httpsession

如果客户端不调用connection.disconnect(),会话超时后连接是否会自动关闭?如果没有,那么什么时候?它还能活多久?如果有很多“未连接”的连接,服务器会有问题吗

更新:示例客户端

        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(),服务器将使用哪个超时Servlet容器连接器超时?但更改此设置将影响此容器中的所有应用程序

默认Tomcat连接器超时为20000=2分钟,这是否意味着我只能在最多2分钟内使用打开的连接?2分钟后会自动断开吗


非常感谢

disconnect()方法用于向底层HTTP连接池发出信号,表示您不太可能在不久的将来连接到此URL,因此无需再将连接池化。除非在这种情况下,否则你不需要叫它。但是,您确实需要关闭连接的输出和输入流,以便将其释放回池中。池将负责关闭空闲或失效的连接。

disconnect()方法用于向底层HTTP连接池发出信号,表示您不太可能在不久的将来连接到此URL,因此不需要再将连接池化。除非在这种情况下,否则你不需要叫它。但是,您确实需要关闭连接的输出和输入流,以便将其释放回池中。池将负责关闭空闲或死连接。

如果不是必须的方法,那么池中的许多死/空闲(未连接)连接不应该影响服务器的性能?换句话说:我必须担心这些死连接吗?不,池和服务器会担心。如果这不是必须的方法,那么池中许多死/空闲(未连接)连接不应该影响服务器的性能?换句话说:我必须担心这些死掉的连接吗?不,池和服务器才是最令人担心的。