我正在编写一个实现 Web 服务的独立应用程序,其端点是使用嵌入式 Sun HttpServer 发布的。我对此有一个奇怪的问题,在特定的部署情况下,服务器处理/发送回复和客户端接收回复之间存在明显的延迟。
让我给出几个场景:
案例 1)工作:服务器在 Eclipse 中运行,它使用 OpenJDK 1.6.0_23 作为运行时。客户端是用axis(不是axis2!)实现的,并且在JBoss 内的Solaris x86 上运行(必须承认我不知道使用的确切Java 版本,但我怀疑是Java 5 版本)。
案例 2)工作:服务器在 Solaris x86 上运行,java 1.6.0_26,客户端在 Eclipse 中运行,OpenJDK 1.6.0_23。
案例 3) 不工作:服务器在 Solaris x86 上运行 java 1.6.0_26,客户端在 Solaris x86 上,轴在 Solaris x86 上(再次怀疑它是 Java 5,而不是 6)。
我想知道我是否会遇到以下 Java 错误,该错误已在 1.6.0_30 中修复(假设 OpenJDK 1.6.0_xx 没有遇到同样的错误)?
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7068416
但如果是这样,那为什么案例 2 会起作用呢?客户端可以以某种方式控制服务器端的 TCP_NODELAY吗?
关于我观察到的确切延迟:我有 2 个 Web 服务,在不同的上下文中发布。例如 2 个不同的 WSDL。客户端(显然)对每个服务都有单独的(轴 1)绑定。对于一项服务,我看到一致的延迟正好是 150 秒,而对于另一项服务,延迟始终是 300 秒。这些价值观会给任何人敲响警钟吗?
马丁
编辑 我现在倾向于Eclipse Generated Web Service Client Extremely Slow中的原因和解决方案。目前无法测试,因为我正坐在酒店房间里,无法访问系统。