在applet容器下加载Swing应用程序时出现性能问题。
Swing客户端使用RMI协议与JBoss服务器通信。 当比较我们的webstart应用程序VS新的Applet容器时,它似乎是 对象封送在applet中占用了更多的时间。
ObjectInputStream - > writeExternal(使用JBoss Client RMI infra)花费了太多时间来完成,比webstart多出3-5倍 在我们的ENV中,我们有完整的部署,可以同步服务器和客户端之间的所有JARS(applet或webstart),因此我们不需要远程加载它们 applet标记如下所示:
archive =“[包含100个JARS列表 - >约200 MB]” 基本代码= “HTTP:// [remoteApacheServer] / USERTEST:85600”
列出项目
参数列表...
当检查到applet bootstrap时,Applet从服务器加载了所有JARS 但是使用sniffer检查我们发现,每次我们编组一个新类时,applet类加载器都没有使用本地版本,而是向remoteApacheServer发送另一个请求来查找特定的类。
我们找到了解决方案:使用applet参数: param name =“codebase_lookup”value =“false
我们也看到在本地加载JARS - 设置将为JRAS提供服务的本地nodejs HTTP并设置代码库以使用此临时服务器也可以提高性能。
甚至只需创建只需将请求代理回原始remoteApacheServer帮助的nodejs服务器。
但表现仍然不佳: - (
我们在嗅探器中看到客户端每次都使用applet代码库和完整的归档列表(所有100个JARS)发送请求,我们看到RMI有一个功能 (使用Java™RMI进行动态代码下载)即使服务器不存在于本地CLASSPATH中,服务器也可以对其进行Marshell。
请参阅RMI设置here
你知道为什么禁用它 - 我认为它可以帮助解决性能问题。
也许使用java.rmi.server.useCodebaseOnly?