在Applet上禁用RMI动态代码下载(使用代码库) - 性能问题

时间:2014-03-12 22:48:36

标签: java performance swing applet rmi

在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?

0 个答案:

没有答案