2013-04-08 84 views
1

我想用JAX-WS生成的代理调用webservice。Jax-ws客户端:初始化速度很慢

WSDL相对较小(11kB),只有3个操作,并且存储在本地。

但是,当我尝试初始化端口,它卡住10-20秒在这条线在标准输出:

在检索文档 “文件:/ C:/路径/到/ web应用/的WebContent/WEB-INF/WSDL /”。

对应于new MyServicePort(new URL(wsdlLocation)),和的wsdl的读数。

对web服务的所有后续调用均正常工作,并且速度很快(每次调用时为< 200 ms)。

new MyServicePort(new URL(wsdlLocation))后续调用也快...

是这样的响应时间正常合理spec'ed的电脑吗? (核心i5 + 8GB内存)

+0

确实wsdl包含远程URL的模式导入吗? – jtahlborn 2013-04-08 13:40:55

+0

不,没有远程URL,除了命名空间 – Mikarnage 2013-04-08 14:48:21

+0

你应该附上一个分析器,看看它在哪里花时间。别的什么都只是猜测。 – jtahlborn 2013-04-08 15:05:06

回答

0

由于正在创建代理对象并且框架工作初始化进行WS调用所需的所有类,所以在应用程序启动后第一次Web服务调用通常很慢。

一个常见的解决方法是让你的服务公开一些不会做任何事的存根方法),当你的应用程序启动时,调用这个存根。 这将在后台创建服务代理对象,以及应用程序实际向服务发出呼叫的时间,一切都准备就绪。

+0

不应花费10-20秒来创建一些代理对象。 – jtahlborn 2013-04-08 14:11:52

+0

它依赖于服务器到服务器,因为在我们的例子中,我们使用的是网络逻辑,第一次调用需要50-60秒,当我们在JBoss中尝试时,需要20-30秒。谷歌对于“第一次WS呼叫很慢”,你会发现很多信息。 – NullPointerException 2013-04-08 14:17:12