在 JAX-WS 参考实现 (Metro) 中,创建的成本非常低廉(在我们生成的客户端中,我们倾向于发现这需要大约 20 毫秒)。JavaWebService
第一次创建是相当昂贵的(对我们来说大约200ms);对同一实例的后续调用要快得多(对我们来说大约3ms)。SomePort
getSomePort()
JavaWebService
因此,每次需要创建一个的实现都会带来一定程度的费用。简而言之,问题的答案是“相当昂贵”。JavaWebService
SomePort
但是,即使 上的方法不是线程安全的,但 上的方法也是。因此,明智的使用模式(至少在Metro中 - 由于缺乏规范,线程安全是特定于实现的)是重用的,因为您只会产生一次昂贵的调用。SomePort
JavaWebService
JavaWebService
getSomePort()
更新
这与来自甲骨文德国的员工Andreas Leow的两篇帖子一致,@PapaLazarou在下面的评论中引用了帖子中的海报之一,他写了关于该物体的文章,Service
每个 WSDL 只能创建一个静态实例:任何单个对象都是完全线程安全的,并且可以由任意数量的并发线程共享。Service
Service
以及关于端口的使用,
虽然我几乎可以100%确定CXF JAX-WS端口是线程安全的,但Metro的对象肯定不是线程安全的。Port