2013-12-14 3 views
1

XML 형식으로 응답하는 서블릿이 있습니다.HTTP 클라이언트가 연결을 닫아야합니다.

클라이언트가 httpsURLConnection을 통해이 서블릿에 연결합니다. 고객이 connection.disconnect()으로 전화하지 않으면 문제가 발생합니까? 그는 task=getSomeData,...etc 같은 새로운 매개 변수를 게시 할 수 있습니다 성공하면,

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

openconnection()... 

이제 클라이언트가 사용자 이름과 암호를 게시 할 수 있습니다

이 시나리오를 수행 할 수 있습니다. 연결 해제하기 전에.

모든 Connection에 대해 클라이언트는 새로운 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(); 
      } 
     } 

클라이언트이 경우에는 시간 제한을 설정하지,하는 타임 아웃) (서버에 사용되는? 서블릿 컨테이너 커넥터 시간 초과?하지만이 값을 변경하면이 컨테이너 내의 모든 응용 프로그램에 영향을 미칩니다.

Tomcat 커넥터의 기본 시간 초과는 20000 = 2 분입니다. 최대 2 분만 열 수 있습니다. 2 분이 지나면 자동으로 연결이 끊어 집니까?

많은 감사.

답변

1

disconnect() 메서드는 기본 HTTP 연결 풀에 신호를 보내어 가까운 시일 내에이 URL에 연결할 가능성이 거의 없음을 알려주므로 연결을 더 이상 풀 필요가 없습니다. 이 경우를 제외하고는 전화 할 필요가 없습니다. 그러나 출력을 닫고 연결 스트림을 입력하여 풀로 다시 릴리스해야합니다. 풀은 유휴 또는 자체 연결을 닫는 것을 처리합니다.

+0

메쏘드가 아니라면 많은 죽은/유휴 (접속되지 않은) 연결 풀링은 서버의 성능에 영향을 미치지 않아야합니까? 다른 말로하면 : 나는이 죽은 연결에 대해 걱정해야만 하는가? –

+0

아니요, 풀과 서버가 걱정합니다. – EJP

+0

정보를 보내 주셔서 감사합니다. –