为什么我必须为我的applet使用单独的jvm?

时间:2010-12-22 00:31:34

标签: java applet jvm

我制作了一个小程序,通过我们的电话系统switchvox自动拨打联系人号码,并将通话信息记录到我们的CRM,salesforce中。我遇到的问题是,除非我使用单独的JVM参数,否则事情变得棘手。

例如,假设他们为多个联系人打开了多个选项卡,因此在同一个jvm中运行多个applet。如果没有单独的jvm参数,有时它会从另一个选项卡拨打一个号码。我通过参数标签传递数字,我甚至尝试通过从applet调用JS方法传递数字仍然没有运气。

由于我们的crm是基于云的,人们喜欢打开多个标签,但不喜欢在下方看到多个java图标,请参阅图。任何人之前都有这个问题,和/或有一个没有单独的jvms的解决方法。

2 个答案:

答案 0 :(得分:3)

如果不查看applet的代码,很难说。

但我猜测你的代码会在静态中放入一些可变状态,偶尔会有一个applet实例通过静态干扰另一个实例。

如果你的applet中有任何共享的可变静态,理想情况下你应该摆脱它们。或者,如果状态确实需要由applet的多个实例共享,请确保所有访问都已正确同步。

答案 1 :(得分:1)

小程序之间共享静态,因为它们都在同一个VM中运行。您可以尝试classloader_cache="false" applet option并仍然共享VM。我不确定这个选项是否仅适用于applet启动,但是因为我没有成功使用它。

最好的办法是摆脱静态或使用separate_jvm。