SUGGESTED FIX
6663981 : JNLP applets erroneously shotdown JVM using system.exit() [Ken Russell]
Main.systemExit(int) is being called on many occasions within the core JNLP code,
which itself calls System.exit(int) unconditionally.
Now 'Main.systemExit(int)'
throws an ExitException in case of JNLP-OOPP,
otherwise it just calls System.exit() and shall not impact with core JAVAWS.
Since an exception is being thrown, we have to catch this one in all callees.
+++
We also introduce another UI abstraction:
"public interface LaunchDownload.DownloadProgressWindow"
Instead of an AWT Component, we hold the UI owner as an Object type.
This is done to reduce the new exit beahvior dependy of the DownloadWindow UI
to JNLP OOPP.
+++
testcase: http://j2se.east.sun.com/deployment/www/tests/1.6.0_10/6663981/
webrev: http://sa.sfbay.sun.com/projects/deployment_data/6u10/6663981.4/
|
|
|
SUGGESTED FIX
Main.systemExit(int) shall call System.exit() in case of core JAVAWS.
In case of JNLP.OOPP it shall throw an ExitException - 'abort', or 'cancel',
which must be catched.
|
|
|
EVALUATION
Main.systemExit(int) is being called in many occasions
within the core JNLP code,
which itself calls System.exit(int) unconditionally.
In case of JNLP.OOPP, we have follow a different exit pattern.
|
|
|
EVALUATION
Definitely reproducible. Unclear at this point which piece of code is causing System.exit() to be called. One suspicious note is that DownloadWindow.initialize() is being called from the JNLP2Manager passing "true" for "exitOnCancel", which is wrong in the context of applets. However this is not likely to be the cause of this particular bug.
|
|
|
|