LG3D の終了... できない
LG3D は動くようになりました。
というわけで、次は止めてみましょう。
8/12 に書いたように、Tomcat Plug-in では start メソッドも、stop メソッドも単一のメソッドをコールしているだけです。
public void start() throws CoreException { this.runTomcatBootsrap(getStartCommand(), true, RUN); } public void start() throws CoreException { this.runTomcatBootsrap(getStopCommand(), false, RUN); }
この true と false が入っている変数に対応しているのが、Tomcat Plug-in の VMLauncherUtility の runVM メソッドの shoInDebugger 引数と saveConfig 引数です。
static public void runVM(String label, String classToLaunch, String[] classpath, String[] bootClasspath, String vmArgs, String prgArgs, ISourceLocator sourceLocator, boolean debug, boolean showInDebugger, boolean saveConfig)
そして、この 2 つの変数を使用しているのが、
// Show in debugger if (showInDebugger) { DebugPlugin.getDefault().getLaunchManager().addLaunch(launch); }
と
config.setAttribute(IDebugUIConstants.ATTR_PRIVATE, !saveConfig);
if(saveConfig) { config.doSave(); }
の 3 箇所。なんかどれをとっても、JVM を終了させているように見えないのです。名前からして、JVM を終了させているようには見えないのですが...
とりあえず、やってみましょう。
LG3DLauncher クラスの launch メソッドを昨日は引数なしにしていましたが、それを boolean の引数をとるようにしました。そして、Tomcat Plug-in の VMLaunchUtility クラスのように処理内容を変更。
そして、StopActionDelegate クラスの run メソッドからは launch を false でコールするようにしました。
で、やってみたのですが。
ありゃりゃ。
LG3D が 2 つ立ち上がってしまいました。
うーん、やっぱり JVM を終了させるようには全然見えなかったものなぁ。
さて、どうしたものか。