security - Java plugin 7u40 can't load an applet just after leaving a page with another applet -
symptoms
i have web application running on tomcat. web pages contain applet, packed , signed ca certificate , requested "permissions: all-permissions" in manifest.
i have latest jre 7u40 on client side. when browse page applet loads without security or other warnings. when leave page , return page in short time (less 60 seconds) applet can't loaded. if leave page, wait until java.exe , jp2launcher.exe exit, , return page, applet loads again.
this behaviour changed jre 7u25 applet loaded in cases. issue reproducible on windows 7 ie 8 , on windows 7 latest chrome 30.0.x.x. can't reproduce on windows 8 ie 10.
workaround
the workaround know system.exit() in applet.destroy() separate_jvm applet parameter. think brute. do know other workarounds?
technical info
first, turn on tracing in java control panel. second, turn on browser-jvm debugging jpi_plugin2_debug=1
jpi_plugin2_verbose=1
when leave page applet, see following in applet console, think applet stop , destroyed.
pluginmain: processing getappletmessage pluginmain: processing javaobjectopmessage liveconnectsupport: has_field_or_method "rf" network: created version id: 1.7.0.40 network: created version id: 1.7.0.25 liveconnectsupport: has_field_or_method "rf": returning result false pluginmain: processing javaobjectopmessage liveconnectsupport: has_field_or_method "onremove" network: created version id: 1.7.0.40 network: created version id: 1.7.0.25 liveconnectsupport: has_field_or_method "onremove": returning result false pluginmain: processing stopappletmessage, applet id 1 basic: starting applet teardown basic: finished applet teardown basic: removed progress listener: sun.plugin.util.progressmonitoradapter@1c24701 basic: pluginmain.unregisterapplet: 1 mananger sun.plugin2.applet.applet2manager@6f403e applet2manager executing destroytgandac() entry http://host:80/appname/applet/,myapplet.jar
when revisit page in short time (less 60 seconds), see following error in debug command window associated browser process.
attempting start applet
exception in thread "thread-0" java.lang.internalerror: should not find running jvm instance no matching jre platform @ sun.plugin2.main.server.jvmmanager.getbestjvminstance(unknown source) @ sun.plugin2.main.server.jvmmanager.getorcreatebestjvminstance(unknown source) @ sun.plugin2.main.server.jvmmanager.startappletimpl(unknown source) @ sun.plugin2.main.server.jvmmanager.startapplet(unknown source) @ sun.plugin2.main.server.jvmmanager.startapplet(unknown source) @ sun.plugin2.main.server.iexplorerplugin.maybestartapplet(unknown source) @ sun.plugin2.main.server.iexplorerplugin.access$200(unknown source) @ sun.plugin2.main.server.iexplorerplugin$backgroundstarter$1.run(unknown source) @ sun.plugin2.main.server.iexplorerplugin$1.run(unknown source)
i've found
<param name="separate_jvm" value="true"/> is quite enough.
Comments
Post a Comment