Java HTTP客户端必须关闭其连接吗
我有一个servlet,它以XML格式响应 客户端通过httpsURLConnection连接到此servlet。 现在,如果客户端不调用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
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,因此不需要再将连接池化。除非在这种情况下,否则你不需要叫它。但是,您确实需要关闭连接的输出和输入流,以便将其释放回池中。池将负责关闭空闲或死连接。如果不是必须的方法,那么池中的许多死/空闲(未连接)连接不应该影响服务器的性能?换句话说:我必须担心这些死连接吗?不,池和服务器会担心。如果这不是必须的方法,那么池中许多死/空闲(未连接)连接不应该影响服务器的性能?换句话说:我必须担心这些死掉的连接吗?不,池和服务器才是最令人担心的。