2013-12-14 61 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

感謝您的信息 –

相關問題