我制作了一个小程序,通过我们的电话系统switchvox自动拨打联系人号码,并将通话信息记录到我们的CRM,salesforce中。我遇到的问题是,除非我使用单独的JVM参数,否则事情变得棘手。
例如,假设他们为多个联系人打开了多个选项卡,因此在同一个jvm中运行多个applet。如果没有单独的jvm参数,有时它会从另一个选项卡拨打一个号码。我通过参数标签传递数字,我甚至尝试通过从applet调用JS方法传递数字仍然没有运气。
由于我们的crm是基于云的,人们喜欢打开多个标签,但不喜欢在下方看到多个java图标,请参阅图。任何人之前都有这个问题,和/或有一个没有单独的jvms的解决方法。
答案 0 :(得分:3)
如果不查看applet的代码,很难说。
但我猜测你的代码会在静态中放入一些可变状态,偶尔会有一个applet实例通过静态干扰另一个实例。
如果你的applet中有任何共享的可变静态,理想情况下你应该摆脱它们。或者,如果状态确实需要由applet的多个实例共享,请确保所有访问都已正确同步。
答案 1 :(得分:1)
小程序之间共享静态,因为它们都在同一个VM中运行。您可以尝试classloader_cache="false"
applet option并仍然共享VM。我不确定这个选项是否仅适用于applet启动,但是因为我没有成功使用它。
最好的办法是摆脱静态或使用separate_jvm。