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

Popular posts from this blog

c++ - CryptStringToBinary API behavior -

c++ - Correct method for redrawing a layered window -

java.util.scanner - How to read and add only numbers to array from a text file -