我有一个带有Application Client模块的EAR应用程序。
在GlassFish v2 上部署此EAR文件并且缓存中存在应用程序客户端模块时,客户端计算机与服务器之间的流量大约为。 0.7kb的。
但是,当我在GlassFish v3 上部署此应用程序并第二次或第三次启动Application Client模块时(因此它已经存在于缓存中),客户端计算机和服务器之间的流量应用程序客户端启动期间为10MB。
有什么不对?
UPD 1
即使我使用Application Client组件创建一个简单的EAR项目,只输出“Hello World”并将其部署在GlassFish v3上,每次从缓存启动Application Client时,它仍然是5-6MB。
UPD 2
尝试深入研究问题。
当我从GlassFish v3中的缓存启动应用程序时,我在我的应用程序客户端中每个库的GlassFish v3日志中收到以下异常:
java.io.IOException: An established connection was aborted by the software in your host machine
例如:
SEVERE: Adapter[/___JWSappclient/___system] s1as/glassfish/modules/webservices-osgi.jar
java.io.IOException: An established connection was aborted by the software in your host machine
at sun.nio.ch.SocketDispatcher.write0(Native Method)
at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:33)
at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:100)
我有一个假设,即流量开销可能是相关的。互联网上有一些关于这个问题的信息。但显然没有官方解释或如何解决它 这是与此问题相关的interesting thread,可能会对此有所了解 以下是Tim(更多tjquinn)评论情况的方法:
“已建立的连接已中止”消息是我们已经看过的消息,但正如您所说,似乎不会影响发布。我认为 - 但尚未验证 - Java Web Start开始下载JAR,然后发现缓存副本是最新的,因此中止传输。这不应该发生,但我还没有发现究竟是什么导致它知道它是Java Web Start问题还是Grizzly问题(基本上是GlassFish中的传输层)或GlassFish问题本身。
UPD 3 关于“Old Nabble”about similar issue的讨论很有趣。启动应用程序客户端后,我们也遇到了Web服务失败的问题。
UPD 4 来自Grizzly论坛的Oleksiy Stashok(UPD 3中提到的主题)建议在Java Web Start论坛上发布这个问题。 And here is the link to the thread on Java Web Start forums