環境
OS:Windows 2000/95/NT3.51/NT4.0
JDK/JRE 1.3を使用したJRun3.0は、ユーザーがウィンドウズNT/2000でログオフを行うと、JRunサーバが停止することがあります。これは、JRunサーバがNTのサービスとしてインストールされた際に発生します。これはバグ19138として登録されています。この記事では、詳細と回避方法について述べます。
この問題は、バグ番号4323062としてSun Microsystemのバグレポートにリストアップされています。しかし、これはバグでなく、回避方法があります。
回避方法
Sunのバグレポートではこの問題の回避のために、 CTRL_LOGOFF_EVENT を無視するようラッパーによってサービスを修正することを示唆しています。
JRun 3.0SP2では、dontdiejava.exe によって回避方法を提供します。JDK 1.3ユーザ は、この回避方法を行うために以下の手順を実行してください。(JDK1.3.1であれば、"-Xrs"オプションによって回避できます。詳細についてはJRunFAQ"ログオフ時のJRunサービス停止について(Windows)"をご参照ください)
設定手順:
- dontdiejava.exe ファイルをJRUN_HOME/binディレクトリに置いて下さい。これは、JVMを呼ぶためのラッパー実行ファイルです。
- 以下に続く手順によってglobal.propertiesファイルを開いてセットしているJVMを修正して下さい
- java.exe プロパティに {jrun.rootdir}/bin/dontdiejava.exe を指定します。例えば、
# path to java virtual machine. Launchers will use system PATH if necessary
#java.exe=C:\\Sun\\jsdk130\\jre\\bin\\javaw.exe
java.exe=D:\\Allaire\\JRun301\\bin\\dontdiejava.exe
- jvm.dllを含むディレクトリのために java.jnipath プロパティにパスを加えて下さい。例えば、
# shared library path for JNI libraries
java.jnipath=C:\\Sun\\jsdk130\\jre\\bin\\hotspot;{user.jnipath};{ejb.jnipath};{servlet.jnipath}
- パスの指定には、前方にスラッシュ(エンマーク)、あるいはダブルバックスラッシュ(ダブルエンマーク)を使う必要があります。user.jnipathをセットすることによって間接的にjava.jnipathをセットすることはできません。直接java.jnipathで指定する必要があります。
dontdiejava.exeはラッパーファイルであるため、もしJVMのためのスタックトレースを行う場合には、java.exe に変更してCTRL-Breakを使用する必要があります。
注意(5/10/01)
最近、IBMの1.3JVMでも同様にログオフ時にNTのサービスが停止する現象が確認されました。http://www-106.ibm.com/developerworks/java/jdk/index.html
IBMのJVMでも同様の回避方法が利用できます。ステップ4のみことなり、この値は、IBMのjvm.dllを示す必要があります。例えば、
java.jnipath=C:\\IBM\\Java13\\jre\\bin\\classic