1

나는이 저지 클라이언트까지와 같이, 아파치 클라이언트 4 라이브러리를 사용하여 실행 :저지 아파치 클라이언트와 연결 관리자 다중 스레드 4

private Client createClient() { 
    ApacheHttpClient4Config cc = new DefaultApacheHttpClient4Config(); 
    // boring stuff here 
    return ApacheHttpClient4.create(cc); 
} 

을하지만 기본적으로이 '아무튼 BasicClientConnManager 사용 다중 스레드 연결을 허용하지 않습니다.

ApacheHttpClient4Config Javadoc은 멀티 스레드 작업을 원할 경우 PROPERTY_CONNECTION_MANAGERThreadSafeClientConnManager 인스턴스로 설정해야한다고 말합니다. 나는이 작업을 수행 할 수 있습니다, 그것은 확인을 작동합니다

private Client createClient() { 
    ApacheHttpClient4Config cc = new DefaultApacheHttpClient4Config(); 
    cc.getProperties().put(ApacheHttpClient4Config.PROPERTY_CONNECTION_MANAGER, 
     new ThreadSafeClientConnManager()); 
    // boring stuff here 
    return ApacheHttpClient4.create(cc); 
} 

그러나 ThreadSafeClientConnManager가되지 않습니다. 이것은 성가신 일입니다.

최신 버전은 PoolingHttpClientConnectionManager입니다. 그러나 불행히도 ApacheHttpClient4.create() 메서드를 사용하려면 연결 관리자가 ClientConnectionManager (자체 지원되지 않음)의 구현이어야하며 PoolingHttpClientConnectionManager은 해당 인터페이스를 구현하지 않아야합니다. 따라서 사용하려고하면 연결 관리자가 무시되고 다시 BasicClientConnManager으로 연결됩니다.

더 이상 사용되지 않는 것을 사용하지 않고 스레드로부터 안전한 클라이언트를 어떻게 만들 수 있습니까? 다음과 같이

+0

당신이 해결책을 찾았나요? – user253202

답변