由於WS客戶端端口的初始化過於昂貴,我們希望重用相同的實例。我們還希望在每次調用之前在BindingProvider/RequestContext中設置不同的值。最初,我們想做到這一點:JAX-WS客戶端是否安全?
MyService service = new MyService(wsdlURL, name);
MyPort myPort = service .getMyServicePort();
再後來,每次調用來完成這一點:
Map requestContext = ((BindingProvider)myPort).getRequestContext();
requestContext.put(BindingProvider.USERNAME_PROPERTY, uName);
requestContext.put(BindingProvider.PASSWORD_PROPERTY, pWord);
myPort.someFunctionCall();
我的問題是,是這樣的代碼線程安全的? JAX-WS文檔似乎表明它是而不是線程安全。但是,CXF seems to be so if you take precautions。如果特別是JAX-WS和Metro不是線程安全的,有沒有什麼方法可以確保線程安全,而無需同步對端口或ws操作的訪問?
這是不明確的規格。檢查這個例子:http://community.jboss.org/message/526321 – Cratylus 2010-12-08 08:47:03