2011-11-04 5 views
4

저지 v10을 사용 중이고 다음 코드를 작성했습니다. 메모리 누출을 피하기 위해 저지 클라이언트 연결을 닫는 올바른 방법입니다. 이전에 int를 호출하지 않았습니다.저지 클라이언트 연결 닫기 메모리 누출 문제

ClientConfig config = setupHttps(); 
    final Client c = Client.create(config); 

    final WebResource r = c.resource(baseUri); 
    ClientResponse response = null; 
    try { 
     response = r.path("/....") 
       .header("contentId", id) 
       .header("sid", sid).get(ClientResponse.class); 
     ... 



    } catch (Exception e) { 
     log.error("Error returning contentServiceName."); 

    } finally { 
     if (response != null) { 
      response.close(); 
     } 
     if (c!= null) { 
      c.destroy(); 
     } 

    } 

TIA, 비제이

답변

8

지금까지 내가 아는 한, 예, 이것은 다음과 같은주의 사항에 ... 저지 클라이언트을 종료 할 수있는 권리 방법입니다 .

무엇을 방지하려는 것은 메모리 누수,하지만 당신은 해결하고있는 서버) 누수에 연결 (하지

1) ...

2) Chapter 3 of the Jersey HandbookClient 클래스에 대해 설명입니다 :

클라이언트 인스턴스는 값 비싼 리소스입니다. 구성된 인스턴스를 웹 자원 생성에 다시 사용하는 것이 좋습니다. 웹 리소스 생성, 요청 작성 및 응답 수신은 스레드로부터 안전합니다. 따라서 클라이언트 인스턴스와 WebResource 인스턴스가 여러 호출을 계획하는 경우, 따라서 여러 스레드

간에 공유 할 수 있습니다, 그것은 모든 통화에 대해 파괴 호출하는 것이 좋습니다 하지입니다. WebResources도 마찬가지입니다 (그러나 적지 만).

3) Jersey 1.1의 설명입니다 (단, threads about this as far back as 2009 참조).