Java applet依赖项已多次获取

时间:2013-02-22 17:06:01

标签: java applet jaxb

Web应用程序我正在研究嵌入<applet>,它有几个依赖项(.jar文件)。

Applet标签看起来像这样:

<applet ...
        type="application/x-java-applet"
        codebase="/webapp/applet">
     ...
     <param name="codebase" value="./applet"/>
     <param name="archive" value="a.jar,b.jar,c.jar"/>
     <param name="codebase_lookup" value="false"/>
</applet>

Applet工作正常,但问题是,当它加载第一次时,那些a.jar,b.jar,c.jar等正在请求< / strong>(和已下载)来自网络服务器很多(20-300)次,每个都会让applet启动速度很慢。

什么事情发生了,是否分别为每个加载的类重新下载了jar?

有没有办法正确优化/配置applet?试过几个缓存技巧(比如<param name="cache_archive" />,但没有成功,甚至不确定它是解决这个问题的正确方法。

NB!这个applet是 WS客户端(有一些 JAXB - 注释类和相关的依赖项)。


Applet登录启动时有很多:

network: Connecting http://127.0.0.1:7001/webapp/applet/a.jar with proxy=DIRECT
network: Connecting http://127.0.0.1:7001/webapp/applet/a.jar with proxy=DIRECT
network: Connecting http://127.0.0.1:7001/webapp/applet/a.jar with proxy=DIRECT
... ~100 more times a.jar is downloaded
network: Connecting http://127.0.0.1:7001/webapp/applet/a.jar with proxy=DIRECT
network: Connecting http://127.0.0.1:7001/webapp/applet/b.jar with proxy=DIRECT
network: Connecting http://127.0.0.1:7001/webapp/applet/b.jar with proxy=DIRECT
network: Connecting http://127.0.0.1:7001/webapp/applet/c.jar with proxy=DIRECT
network: Connecting http://127.0.0.1:7001/webapp/applet/a.jar with proxy=DIRECT
network: Connecting http://127.0.0.1:7001/webapp/applet/c.jar with proxy=DIRECT
...

Web服务器访问日志反映了applet日志:

127.0.0.1 - "GET /webapp/applet/a.jar HTTP/1.1" 200 1232582 
127.0.0.1 - "GET /webapp/applet/a.jar HTTP/1.1" 200 1232582 
127.0.0.1 - "GET /webapp/applet/a.jar HTTP/1.1" 200 1232582 
...
127.0.0.1 - "GET /webapp/applet/a.jar HTTP/1.1" 200 1232582 

1 个答案:

答案 0 :(得分:0)

这种情况正在发生,因为 CXF URL.openStream()用于从jar(模式,wsdls等)访问不同的资源。

通过使用类加载器中的URL.openStream()方法替换getResourceAsStream()来解决问题(显然Applet2ClassLoader.getResource().openStream()进行了不必要的连接而Applet2ClassLoader.getResourceAsStream()没有)。< / p>

更新:它似乎正在使用Java7插件,而不是Java6插件。