web-services - JAX-WS客户端线程安全吗?

标签 web-services jax-ws java-metro-framework webservices-client

因为WS客户端端口的初始化非常昂贵,所以我们想重用同一实例。我们还想在每次调用之前在BindingProvider / RequestContext中设置不同的值。最初,我们想这样做:

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操作的访问?

最佳答案

对于JAX-WS / Metro,绝对不是线程安全的。最好的选择是创建一个代理池,并在需要时从池中提取代理,对其进行配置,使用,清除设置值并返回到池。

或使用CXF。

关于web-services - JAX-WS客户端线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4385204/

相关文章:

java - 在同一 bean 上使用 EJB 和 JAXWS 时 weblogic 12cR2 烦人的日志

java - 如何在 Java Metro 中指定用户名/密码?

c# - 使用 JSON 响应从 Java 调用 C# Web 服务

wcf - 如何将服务引用与基本身份验证 WCF SOAP 服务一起使用

java - 如何在 JAX-WS 中添加响应 header

java - 有没有人得到 jax-ws-catalog.xml 来在 Metro 上本地解析 schemaLocation?

java - 为什么在使用 JAXB 数据绑定(bind)部署任何服务时 JAX-WS 会卡住?

java - Spring WS如何获取服务器端soap响应xml以添加带符号的soap header

c++ - 为什么通过 gSOAP 发送二进制数据太慢了?

java - 使用 wsimport 生成的注释可以被覆盖吗?