Являются ли заглушки, сгенерированные WSDL2JAVA (с помощью опции привязки XMLBeans) через Axis2 1.5.4, потокобезопасными?
На самом деле я создал одну заглушку для веб-службы, которую я вызываю через несколько потоков.Я настроил свой собственный MultiThreadedHttpConnectionmanager
и также установил HTTPConstants.REUSE_HTTP_CLIENT
, но я вижу некоторые исключения NullPointerException в stub._getServiceClient().cleanupTransport
, которые я вызываю после каждого вызова.
Иногда темы тоже зависают.
В то же время я заметил, что в сгенерированном заглушке в методе работы Web-сервиса cleanup () вызывается уже в блоке finally.Не следует ли мне потом самому позвонить stub._getServiceClient().cleanupTransport
Мой код:
httpConnMgr = new MultiThreadedHttpConnectionManager();
HttpConnectionManagerParams params = httpConnMgr.getParams();
if (params == null) {
params = new HttpConnectionManagerParams();
}
params.setDefaultMaxConnectionsPerHost(numberOfThreads);
httpConnMgr.setParams(params);
HttpClient httpClient = new HttpClient(httpConnMgr);
service = new Service1Stub(this.endPointAddress);
service._getServiceClient().getOptions()
.setTimeOutInMilliSeconds(this.timeOut);
service._getServiceClient().getOptions()
.setProperty(HTTPConstants.REUSE_HTTP_CLIENT, Boolean.TRUE);
service._getServiceClient().getOptions()
.setProperty(HTTPConstants.AUTO_RELEASE_CONNECTION, Boolean.FALSE);
service._getServiceClient()
.getOptions()
.setProperty(HTTPConstants.SO_TIMEOUT, (int) (this.timeOut));
service._getServiceClient()
.getOptions()
.setProperty(HTTPConstants.CONNECTION_TIMEOUT,
(int) (this.timeOut));
service._getServiceClient().getServiceContext().getConfigurationContext()
.setProperty(HTTPConstants.CACHED_HTTP_CLIENT, httpClient);
Тем временем в сгенерированной заглушке я заметил, что cleanUp уже вызывается:
finally {
_messageContext.getTransportOut().getSender().cleanup(_messageContext);
}
Любое предложение будет очень полезным.Спасибо.