(XMLBeans 바인딩 옵션을 사용하여) WSDL2JAVA에 의해 생성 된 스텁은 Axis2 1.5.4 스레드로부터 안전한가요?Axis2 생성 스텁은 스레드로부터 안전합니까?
실제로 여러 스레드를 통해 호출하는 웹 서비스 용 스텁을 하나 만들었습니다. 내 자신의 MultiThreadedHttpConnectionmanager
구성하고 HTTPConstants.REUSE_HTTP_CLIENT
설정하지만 각 호출 후 호출 있는 일부 NullPointerExceptions보고 있습니다.
간혹 스레드가 멈추는 경우가 있습니다.
동시에 웹 서비스 조작 메소드에서 생성 된 스텁에서 cleanup()이 finally 블록에서 이미 호출 된 것으로 나타났습니다. 나중에 stub._getServiceClient().cleanupTransport
번으로 전화하지 않아야하나요?
내 코드 :
가finally {
_messageContext.getTransportOut().getSender().cleanup(_messageContext);
}
어떤 제안이 크게 도움이 될 것입니다 :
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);
한편 생성 된 스텁에, 나는 정리가 이미 호출 된 것으로 확인되었습니다. 감사.
요점은 무엇인가 : 스레드 안전 인 명시 적으로 명시되지 않은 경우, 그렇지 않은 것으로 가정합니다. –