Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

JSLにてstopsigunatureの設定について

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()を使う設定のままでいく、という選択もありますが・・・。

どなたか、原因などご存じの方がいらっしゃいましたら、
教えていただけませんか。

4

回答

4485

閲覧

4件の回答

評価

0

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:

評価

0

そっちが原因か。
ありがとうございます。

シグネチャ違いで、そりゃ間違いじゃないんだが、
もうちっと、メッセージをピンポイントにできないもんかな。
いや、先日仕事でそういう指摘を受けたんですけどね。

評価

0

安心しろw
それまだいいれべる
NRIのオブジェクトワークス設定みするとすべてNullPointerException になるというww

評価

0

まあ、今回はパラメータも少ないしね。

Strutsとかのフレームワークの
*.xmlに、クラス名をフルパスで記述せにゃならんとか、
定義されたタグを辿っていかにゃならんとか、
時々、気が狂いそうになるときがある。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。