느린 웹 서비스 (각 요청이 약 4 분)로 작업 중이며 2 시간 내에 약 100 건의 요청을 수행해야하므로 여러 스레드를 사용하십시오. 문제는 스텁이 다른 모든 것을 거부하기 때문에 2 개의 스레드 만 가질 수 있다는 것입니다. Here 설명과 가능한 해결책을 찾았습니다.java 및 axis2를 사용하여 웹 서비스에 멀티 스레딩 요청을 보낼 때 "시간 초과"
아래의 예에서 같은 것을 MultiThreadedHttpConnectionManager의 자신의 인스턴스를 생성하고 서비스 스텁에서 사용 이었다 동일 defaultMaxConnectionsPerHost 값 에 것 같다같은 문제가있었습니다. 그것의 소스가 MultiThreadedHttpConnectionManager 나를 위해 2. 해결 방법,
필자는 작성자가 말했듯이 더 높은 setMaxTotalConnections 및 setDefaultMaxConnectionsPerHost 값을 가진 스텁에 HttpClient를 전달했지만 문제는 이제 해당 응용 프로그램 동결은 (글쎄, 실제로 얼지 않는다. 그러나 아무것도하지 않는다).
public ReportsStub createReportsStub(String url, HttpTransportProperties.Authenticator auth){
ReportsStub stub = null;
HttpClient httpClient = null;
try {
stub = new ReportsStub(url);
httpClient = createHttpClient(10,5);
stub._getServiceClient().getOptions().setTimeOutInMilliSeconds(10000000);
stub._getServiceClient().getOptions().setProperty(org.apache.axis2.transport.http.HTTPConstants.AUTHENTICATE, auth);
stub._getServiceClient().getOptions().setProperty(org.apache.axis2.transport.http.HTTPConstants.CHUNKED, false);
stub._getServiceClient().getServiceContext().getConfigurationContext().setProperty(HTTPConstants.CACHED_HTTP_CLIENT, httpClient);
return stub;
} catch (AxisFault e) {
e.printStackTrace();
}
return stub;
}
protected HttpClient createHttpClient(int maxTotal, int maxPerHost) {
MultiThreadedHttpConnectionManager httpConnectionManager = new MultiThreadedHttpConnectionManager();
HttpConnectionManagerParams params = httpConnectionManager.getParams();
if (params == null) {
params = new HttpConnectionManagerParams();
httpConnectionManager.setParams(params);
}
params.setMaxTotalConnections(maxTotal);
params.setDefaultMaxConnectionsPerHost(maxPerHost);
HttpClient httpClient = new HttpClient(httpConnectionManager);
return httpClient;
}
그럼 내가 그 스텁 스레드 각각에 요청을 전달하고이를 실행
내 코드를 이잖아. HttpClient를 설정하지 않고 기본값을 사용하면 두 개의 스레드 만 실행되고 설정하면 응용 프로그램이 작동하지 않습니다. 어떤 생각?
스레드 덤프를 보면이 스레드들은 무엇을하고 있습니까? (예를 들어, Eclipse에서 클라이언트를 디버깅하는 경우 디버그 퍼스펙티브로 이동하여 모든 스레드를 일시 중지 한 다음 각 스레드를 클릭하여 최대 성능을 확인하십시오. –
이 경우 시도해 볼 수도 있습니다. 나는 그들이 왜 교수형을하는지 이해하지 못한다. – Sergi