Les stubs sont-ils générés par WSDL2JAVA (en utilisant l'option de liaison XMLBeans) via Axis2 1.5.4 thread-safe?Les Stubs générés par Axis2 sont thread-safe?
En fait, j'ai créé un Stub pour un service Web que j'appelle par le biais de plusieurs threads. J'ai configuré mon propre MultiThreadedHttpConnectionmanager
et ai également défini le HTTPConstants.REUSE_HTTP_CLIENT
mais je vois quelques exceptions NullPointer dans stub._getServiceClient().cleanupTransport
que j'appelle après chaque invocation.
Parfois, les threads sont également suspendus.
En même temps, j'ai remarqué que dans la méthode d'exécution Stub dans le service Web, cleanup() est déjà appelé dans le bloc finally. Est-ce que je ne devrais pas appeler stub._getServiceClient().cleanupTransport
moi-même après?
Mon code:
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);
Pendant ce temps dans le stub généré, je remarque que cleanUp est déjà appelé:
finally {
_messageContext.getTransportOut().getSender().cleanup(_messageContext);
}
Toute suggestion serait grandement utile. Merci.
Voilà le point: S'il n'est pas explicitement indiqué que quelque chose est sûr, alors supposons que ce n'est pas le cas. –