你知道创建Web服务客户端服务实例有多昂贵吗?
JavaWebService service = new JavaWebService();
SomePort port = service.getJavaWebServicePort();
在多线程环境(Web应用程序)中创建一次服务,然后重用相同的端口不危险吗?
我读到getPort和端口本身不是线程安全的,但每次创建服务可能会有问题,特别是它是一个昂贵的操作。
有任何想法吗?
谢谢。
你知道创建Web服务客户端服务实例有多昂贵吗?
JavaWebService service = new JavaWebService();
SomePort port = service.getJavaWebServicePort();
在多线程环境(Web应用程序)中创建一次服务,然后重用相同的端口不危险吗?
我读到getPort和端口本身不是线程安全的,但每次创建服务可能会有问题,特别是它是一个昂贵的操作。
有任何想法吗?
谢谢。
JavaWebService
是廉价的(在我们生成的客户端中,我们发现这大约需要20毫秒)。SomePort
是相当昂贵的(对我们来说大约需要200毫秒);对同一个 JavaWebService
实例的后续调用 getSomePort()
则要快得多(对我们而言约为3毫秒)。SomePort
就创建一个 JavaWebService
的实现将具有一定代价。简而言之,答案是“相当昂贵”。SomePort
上的方法不是线程安全的,JavaWebService
上的方法却是线程安全的。因此,在使用Metro时,明智的使用模式是重用 JavaWebService
,因为您只会一次性地遇到高昂成本的 getSomePort()
调用。Service
对象写道:Service
实例:任何单个的 Service
对象都是完全线程安全的,并且可以被尽可能多的并发线程共享。”Port
对象绝对不是线程安全的。”
getPort
返回单独的实例。 - David Harkness