2013-12-14 59 views
1

我有一个servlet,它以XML格式响应。必须HTTP客户端关闭他们的连接

客户端通过httpsURLConnection与此servlet连接。 如果客户不打connection.disconnect(),现在是个问题吗?

可以遵循这样的场景:

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

openconnection()... 

现在客户端必须张贴的用户名和密码,如果成功,他可以张贴像task=getSomeData,...etc新参数。断开之前。

对于每个连接,客户端将变为新的httpsession。

如果客户端没有调用connection.dissconnect(),会话超时后连接是否会自动关闭?如果不是,那么什么时候?它会活多久?如果存在sooomany“UNdisconnected”连接,是否对服务器有问题?

UPDATE:样本客户

 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(); 
      } 
     } 

客户端设置无超时,在这种情况下,超时将在服务器)使用,如果该客户端不叫断开(? Servlet容器连接器超时?但改变这将影响此容器内的所有应用程序。

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

很多谢谢。

回答

1

disconnect()方法用于向底层HTTP连接池发出信号,表示在不久的将来您不可能连接到此URL,因此无需再连接该连接。除了在这种情况下,你不需要叫它。但是,您需要关闭连接的输出和输入流,以便将其释放回池中。游泳池将负责关闭闲置或死亡连接本身。

+0

如果它不是一个必须的方法,那么汇集许多死/空闲(未连接)连接不应该影响服务器的性能?换句话说:我是否必须担心这些死亡的关系? –

+0

不,游泳池和服务器确实令人担忧。 – EJP

+0

感谢您的信息 –

相关问题