나는이 저지 클라이언트까지와 같이, 아파치 클라이언트 4 라이브러리를 사용하여 실행 :저지 아파치 클라이언트와 연결 관리자 다중 스레드 4
private Client createClient() {
ApacheHttpClient4Config cc = new DefaultApacheHttpClient4Config();
// boring stuff here
return ApacheHttpClient4.create(cc);
}
을하지만 기본적으로이 '아무튼 BasicClientConnManager
사용 다중 스레드 연결을 허용하지 않습니다.
ApacheHttpClient4Config
Javadoc은 멀티 스레드 작업을 원할 경우 PROPERTY_CONNECTION_MANAGER
을 ThreadSafeClientConnManager
인스턴스로 설정해야한다고 말합니다. 나는이 작업을 수행 할 수 있습니다, 그것은 확인을 작동합니다
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
으로 연결됩니다.
더 이상 사용되지 않는 것을 사용하지 않고 스레드로부터 안전한 클라이언트를 어떻게 만들 수 있습니까? 다음과 같이
당신이 해결책을 찾았나요? – user253202