読者です 読者をやめる 読者になる 読者になる

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 つ立ち上がってしまいました。

Two LG3D


うーん、やっぱり JVM を終了させるようには全然見えなかったものなぁ。

さて、どうしたものか。