質問: Derbyを、Windowsのサービスとして使用したく、 JSLの設定をしようとしています。 startNetworkServer.batにechoをかませて、 起動用コマンドを確認。 それをjsl.iniに記述しました。 確認のため、jsl -debugを実行。 ・・・起動からしてうまくいかない。 -cpに、Derbyのライブラリが記述してあるんですが、 このロングファイルネームを受け付けないんですね。 JAVA_HOMEの「jdk1.6.0_27」なんかは、そのまま通ってるのに。 まあ、wshの行儀の悪さは初めてじゃないですが。 ショートネームに書き替えて起動できるのは確認しました。 が、ライブラリはlibに放り込んであるので、-cpは削除。 これでも起動は大丈夫でした。 が。 終了がうまくいきません。 終了用のパラメータは、以下のようになってます。 stopclass=org.apache.derby.drda.NetworkServerControl stopmethod=shutdown stopsignature=()V 問題はstopsignatureです。 void myMethod() has the signature ()V. Please refer to the JNI documentation for details. とあるので、パラメータ無しのvoidメソッドは、 「()V」で合っていると思うのですが、 起動したあと、ctrl-cで停止しようとすると、 Could not find method shutdown with signature ()V in org.apache.derby.drda.NetworkServerControl と出ます。 要は、NetworkServerControlのshutdownは、 んなシグネチャじゃないよ、と怒られているようなのですが。 なぜ、こんなメッセージが返ってくるのか、理解できません。 元々記述されていたSystem.exit()を使う設定のままでいく、という選択もありますが・・・。 どなたか、原因などご存じの方がいらっしゃいましたら、 教えていただけませんか。
回答: staticメソッドじゃないとダメっぽいですね。 http://jslwin.sourceforge.net/howto.html Stopping a service There are two ways supported for stopping a Java application: A) JSL can call a static method to signal the shutdown request. This is configured in the configuration file: