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
答案 0 :(得分:0)
这种情况正在发生,因为 CXF URL.openStream()
用于从jar(模式,wsdls等)访问不同的资源。
通过使用类加载器中的URL.openStream()
方法替换getResourceAsStream()
来解决问题(显然Applet2ClassLoader.getResource().openStream()
进行了不必要的连接而Applet2ClassLoader.getResourceAsStream()
没有)。< / p>
更新:它似乎正在使用Java7插件,而不是Java6插件。