JMidoriService (Java Midori Service)
和名 : [みソ] JavaアプリケーションをNTサービス化
ダウンロード(Vector) , Download (SourceForge)
English | Japanese
本ソフトウェアの概要
Javaアプリケーション を Windows XP/2000/NTサービス対応アプリケーションとして動作させるためのツールです.Java言語を用いて
Windows XP常駐ソフト を書きたい場合に必要なツールを提供します.
- お手元のJavaアプリケーションを,コントロールパネル内の『サービス』の操作によって起動および終了を行うことが出来るアプリケーションとして動作させることが可能になります
- 『Windows XP/2000/NTにログインしなくても常駐動作するJavaプログラム』が開発できます.
- ライセンス : GNU LGPLライセンス
JMidoriServiceはフリーソフトとして配布します。
JMidoriServiceを用いると,作成したアプリケーションが,『コントロールパネル -> サービス』の画面から開始・停止できます.Windows
XP Pro SP2, Windows 2000 SP2, Windows NT4.0 SP6a で動作確認を行っています。
なお 「NTサービス」を実現するソフトであるため,Windows Me/98/95 では動作しません.
Sun Java2 SDK 1.5.0_01 およびその実行環境 (JRE) に対応しています。(以前のバージョンにおいては、Sun Java2
SDK 1.2.2_006, SUN Java2 SDK 1.3.0_01, SUN Java2 SDK 1.3.1, SUN Java2 SDK
1.4.0_01において動作確認は取れていました)
本ソフトウェアの実装技術
- Windows XP/2000/NTサービス応答を行う常駐部分を exe形式で提供します.この部分は C言語で開発されています。
- 常駐部分においてJava2のJNIを利用して Java2仮想マシンを作成しています。ここで Javaアプリケーションの実行を行います.
- 上記実装ゆえに,下記のソフトウェア要件が求められます.
- Javaアプリケーションであること.
- SUN Java2実行環境 (J2RE 1.5.0_01など) がセットアップされていること.
- Windows XP/2000/NT 4.0であること.
- ※Java2 SDK 1.3 環境下で Windows2000/NTのユーザがログオフ時に NTサービス側が停止してしまう一般的な問題は解決済みです。
本ソフトウェアの背景
- unixなどでは システムに常駐させるプログラムは rcなどにデーモンプロセスなどの形で登録します。いっぽう Windows XP/2000/NTの場合には
NTサービスという形式を取って,常駐プログラムを開発するのが作法に則った方法です.
- ところが,WindowsNT環境においてJavaアプリケーションをNTサービス化などを行って 常駐プログラムにするのは 意外に厄介です.
- このような Javaアプリケーションを常駐させる方法の一つとして Jakarta Tomcatのような仕組みを用いて実現することが可能です。これは良い方法だと思います。JMidoriServiceは
Jakarta Tomcatのようなアプリケーションサーバ無しで 単純にJavaアプリケーションを常駐させるための仕組みを提供します。
作者が新バージョンを登録する場合の登録先
本ソフトウェアを実行するために必要な他のライブラリ
本ソフトウェアの実行には Java実行環境が必要です。
本ソフトのモジュール構成
- JMdSvc.jar : アーカイブ本体/メンテナンスユーティリティ
Java2実行環境がインストールされている環境下にて、これをダブルクリックするとGUIを起動することができます。GUIの中から
自己解凍やNTサービスの登録/解除などを実行することができます。
- MdSvc.exe : JMidoriServiceロードモジュール本体
JMdSvc.jar を実行して表示されるGUIを経由して、このファイルを取り出すことが可能です。
- MdSvc.inf : JMidoriService構成情報ファイル
構成情報ファイルは メンテナンスユーティリティを用いて設定を行うことが出来ます
セットアップ方法
- セットアップは 基本的に そのコンピュータの管理者権限 (Administratorsグループに所属するユーザ)で作業を行うようにします。
- Sun Java2実行環境をインストールしてください。SUN J2RE 5.0 (1.5.0)以上を推奨します。J2REをインストール後 Windowsを再起動してください。
- 新規ディレクトリ (例:JMdSvc) を作成し,このディレクトリにJMdSvc.jar をコピーしてください。
- JMdSvc.jarを実行してください。Windowsエクスプローラからダブルクリックを行うか、または該当フォルダにおいてコマンドプロンプトを開いて
java -jar JMdSvc.jar と実行することによりプログラムを起動することができます。
- GUI画面 解凍タブから 実行ファイル本体のみ解凍ボタンを押して、MdSvc.exeを取り出してください。(解凍の必要がないと判定された場合には灰色表示されます)
- GUI画面 パラメータ設定タブのサービス名・クラスパスなどを設定し 保存ボタンを押してください。
- 「サービス名」には あなたが利用したいJavaアプリケーションに何か適切な名称を命名して付けてください。名称は英文字だけとするほうが無難なようです。
- 「クラスパス」のところには、あなたが利用したいJavaアプリケーションのjarファイルのファイル名を入力してください。
- 「実行クラス名」のところには、あなたが利用したいJavaアプリケーションのmainクラスのクラス名を パッケージ名を含んだ形で入力してください。
- 「プログラム引数」のところには、mainクラスに渡したい引数を渡してください。
- GUI画面 インストールタブの NTサービスをインストールボタンを押して 登録内容を元にサービスのインストールを実行してください。
- あなたが利用したいJavaアプリケーションのjarファイルをJMdSvc.jarを格納したディレクトリと同じディレクトリに配置してください。
※なお、この画面サンプルで利用している MdServer.jarというファイルは JMdSvc.jarに同梱されています。
- サービスとして動作させる前に、まずコマンドプロンプトで動作確認を行うということができます。(この手順は省略することが可能です)
コマンドプロンプトで該当ディレクトリに移動して、MdSvc -debug と入力してコマンドを実行 (ENTERキーを押して改行を行う) すると、コマンド上での動作確認を行うことが出来ます。
F:\temp\jmdsvc>MdSvc -debug
JMidoriService (Java Midori Service) 1.9.8
Copyright (C) 1998-2002 Midori IGA
This is free software, and you are welcome to redistribute it under certain cond
itions.
WWW : http://www01.u-page.so-net.ne.jp/db3/midori/midosoft.html
[JavaMidoriServer] console invokation mode
Service is started.
classpath :[MyServer.jar;.]
class name :[jp.ne.nifty.iga.midori.service.sample.MyServer]
args :[Argument1 Argument2 Argument3
]
java -classpath MyServer.jar;. jp.ne.nifty.iga.midori.service.sample.MyServer Argument1 Argument2 Argument3
引数0: Argument1
引数1: Argument2
引数2: Argument3
F:\temp\jmdsvc>
F:\temp\jmdsvc>
|
動作失敗例
F:\temp\jmdsvc>MdSvc -debug
JMidoriService (Java Midori Service) 1.9.8
Copyright (C) 1998-2002 Midori IGA
This is free software, and you are welcome to redistribute it under certain cond
itions.
WWW : http://www01.u-page.so-net.ne.jp/db3/midori/midosoft.html
[JavaMidoriServer] console invokation mode
Service is started.
classpath :[MyServer.jar;.]
class name :[jp.ne.nifty.iga.midori.service.sample.MyServer]
args :[Argument1 Argument2 Argument3
]
java -classpath MyServer.jar;. jp.ne.nifty.iga.midori.service.sample.MyServer Argument1 Argument2 Argument3
Exception in thread "main" java.lang.NoClassDefFoundError: jp/ne/nifty/iga/midori/service/sample/MyServer
Java Application is finished.
|
NoClassDefFoundErrorと表示されている場合には、設定に失敗していると考えられます。設定値を再度見直ししてください。
- コントロールパネル→管理ツール→サービスを見て 該当のNTサービスのインストールを確認し、そして実行します。
![](images/jmdsvcsetup04.png)
![](images/jmdsvcsetup05.png)
NTサービスを 開始(S)を押すと,サービスが開始され,指定のJavaアプリケーション
が常駐ジョブとして動作します.
- イベントビューアで動作していることを確認してみます。
※ただし,メッセージは環境や設定により若干異なります.
![](images/jmdsvcsetup12.png)
イベントビューアのアプリケーションログに,下記のような2つのメッセージが出力されていれば、動作が成功しているものと考えられます。
メッセージ1つめ
イベント ID (0) (ソース JavaMidoriServer 内) に関する説明が見つかりませんでした。リモート コンピュータからメッセージを表示するために必要なレジストリ情報またはメッセージ DLL ファイルがローカル コンピュータにない可能性があります。この説明を取得するために /AUXSOURCE= フラグを使用することができる可能性があります。詳細については、ヘルプとサポートを参照してください。次の情報はイベントの一部です: JavaMidoriServer INF: 0, Service is started.. |
メッセージ2つめ
イベント ID (0) (ソース JavaMidoriServer 内) に関する説明が見つかりませんでした。リモート コンピュータからメッセージを表示するために必要なレジストリ情報またはメッセージ DLL ファイルがローカル コンピュータにない可能性があります。この説明を取得するために /AUXSOURCE= フラグを使用することができる可能性があります。詳細については、ヘルプとサポートを参照してください。次の情報はイベントの一部です: JavaMidoriServer INF: 0, java -classpath MyServer.jar;. jp.ne.nifty.iga.midori.service.sample.MyServer Argument1 Argument2 Argument3. |
なお、サービス開始直後に 下記のようなメッセージが出てしまっている場合には、設定がうまくできていないことが考えられます。コマンドプロンプト経由における動作確認を行って
設定値を見直して修正していくことが必要とかんがえらえます。
イベント ID (0) (ソース JavaMidoriServer 内) に関する説明が見つかりませんでした。リモート コンピュータからメッセージを表示するために必要なレジストリ情報またはメッセージ
DLL ファイルがローカル コンピュータにない可能性があります。この説明を取得するために /AUXSOURCE= フラグを使用することができる可能性があります。詳細については、ヘルプとサポートを参照してください。次の情報はイベントの一部です:
JavaMidoriServer INF: 0, Java Application is finished.. |
- これでインストールおよび動作確認は完了です。あとは通常のWindowsサービスと同様の操作を行ってください。
- (*)注意! 当ソフトウェアは,安全に動作するよう,注意深く作成いたしました.しかし,試用される際は,適切で安全なテスト環境を作成し,ご試用下さい.
アン インストール方法
- JMdSvc.jarを実行してください。Windowsエクスプローラからダブルクリックしてアプリケーションを起動する、または コマンドプロンプトから
java -jar JMdSvc.jar で起動することができます。
- GUI画面 インストールタブの NTサービスを登録解除ボタンを押して 登録内容を元にサービスの登録解除を実行してください。
この操作を行うことによって,NTサービス一覧から解除されます
- 作成したディレクトリ (例:JMdSvc) を削除して下さい.
(*)注意! 可能な限り、注意深く削除の操作を行い 該当のファイルのみ削除してください.
動作確認済環境
- OS
- Windows XP Pro SP2 日本語版
- Windows2000日本語版SP2
- WindowsNT4.0日本語版 + SP6a
- JavaVM
- Sun Java2 SDK 1.5.0_01 (Windows版)
- 下記は、以前のバージョンにおいて動作確認を行っていた版です。
- Sun Java2 SDK 1.2.2_006 (Win32) 国際版
- Sun Java2 SDK 1.3.0_01 (Win32) 国際版
- Sun Java2 SDK 1.3.1 (Win32) 国際版
- Sun Java2 SDK 1.4.0_01 (Win32) 国際版
関連するソフトウェア
以前のバージョンの Jakarta Tomcatのために 「Windows XP/2000/NTログオフ障害対応常駐機能」のみをJMidoriServiceから取り出して jk_java というフリーソフトも提供しておりました。しかし 最新版 Jakarta Tomcatは 適切な Windows XP/2000サービス対応の機能が実装されているので、jk_javaを利用するシーンは もう無いものと考えています。
FAQ
- Q: Apache Tomcat 3.2.1 を NTサービスとして動作させる方法を教えてください
→Tomcat3.2.1には NTサービス化ツールが付属しますが、残念なことに
SUN Java2 SDK 1.3.0_01環境下において デスクトップログアウト時にプロセス停止してしまうのです。これは
jk_java を利用して回避することもできますが、ここでは
当ソフトのTomcat設定方法をご紹介します。
- Tomcat を D:\tomcat に解凍したと仮定して説明を書きます。これは
TOMCAT_HOME 環境変数がD:\tomcatになった状態を指しています。解凍+展開して
そのまま運用していると jakarta-tomcat-3.2.1
になりますが、このディレクトリ名称を D:\Tomcatに置き換えたものとして説明を進めていきます。
- MDSVC.EXE を TOMSVC.EXE に名前変更して D:\tomcat
に格納してください
- D:\tomcat に MDSVC.INF をコピーしてください。また
MDSVC.INF の内容を 下記のように変更してください。(4行目は空行です。省略しないようご注意下さい)
- Tomcat 3.2.1 用の MDSVC.INF設定
Windows2000SP1/NT4.0SP6a + Java2 SDK 1.3.0_01
で動作確認済
Tomcat-Service
.\lib\ant.jar;.\lib\jasper.jar;.\lib\jaxp.jar;.\lib\parser.jar;.\lib\servlet.jar;.\lib\webserver.jar
org.apache.tomcat.startup.Tomcat
|
- Tomcat 3.1 用の MDSVC.INF設定
Java2 SDK 1.3.0_01 + WindowsNT4.0 Server
SP4 で動作確認済 Thanx > Soushi Hiruta
Tomcat-Service
.\lib\ant.jar;.\lib\jasper.jar;.\lib\xml.jar;.\lib\servlet.jar;.\lib\webserver.jar
org.apache.tomcat.startup.Tomcat
|
- D:\tomcat ディレクトリで TOMSVC.EXE -install を実行してください。下記のようにメッセージが出力されれば
NTサービスとしてのインストールは成功です。
D:\tomcat>TOMSVC.EXE -install
みどりちゃん JavaアプリケーションをNTサービス化 (006)
Copyright (c) 1998-2000 by 伊賀みどり (Midori Iga)
WWW : http://www01.u-page.so-net.ne.jp/db3/midori/midosoft.html
e-mail: midori.iga@nifty.ne.jp
サービス名="Tomcat-Service"
Tomcat-Service installed.
|
- 自己レス: Apacke Jakarta Tomcat 3.2.2 + SUN Java2 SDK 1.3.1 での動作確認を取りました。また その際の 設定ファイルを例として示します。SUN Java2 SDK 1.3.1 の登場により ログオフでJavaVMが異常終了してしまう問題は改善されたのですが、一方のjk_nt_serviceは
なぜか JDKでは動作するのですが JREのみでは動作してくれない模様なのです。そのため
まだ JMidoriServiceは存在意義が継続する可能性があります。
Tomcat3.2.2
E:\tomcat\classes;E:\tomcat\lib\jaxp.jar;E:\tomcat\lib\parser.jar;E:\tomcat\lib\webserver.jar;E:\tomcat\lib\servlet.jar;E:\tomcat\lib\jasper.jar;E:\jdk1.3.1\lib\tools.jar
org.apache.tomcat.startup.Tomcat
-config E:\tomcat\conf\server.xml -home E:\tomcat |
- Q: ソースコードは公開しないのですか?
バージョン1.9.2から GNU GPLライセンスに変更しました。ソースコードはアーカイブに同梱されています。ただし現在はβ版です。
バージョン1.9.9 から GNU LGPLライセンスに変更しました。
- Q: 複数のJAVAアプリケーションをNTサービスを登録する場合にはどうすれば良いですか?
→MDSVC.EXE の名称を 他の名称に変更して利用してください。(例:
TOMSVC.EXE) もちろん それらは別ディレクトリにコピー+実行される必要があります。なお
MDSVC.INF のファイル名は 技術的な理由から変更できません。(この処置は
ロードモジュール名が衝突すると 適切に処理できなくなるWindowsの仕様に対応するために必要です)
Thanx > Ohashi
- Q: 一般的なデバッグ方法を教えてください。
コマンドプロンプトから mdsvc -debug とすることにより UIを基調とした動作を行うことができます。まずはこの手法にて調査ください。C/C++言語を利用可能な方は
ソースコードをダウンロード後 トレースなどを打ち込むことも有効な手段だと思います。
JMidoriServiceメーリングリスト
JMidoriService用メーリングリストがあります。JMidoriServiceの利用および開発などに関して質問などありましたら、下記アドレスまで送信してください。(運がよいと
誰かから返事を貰うことができます)
2001/02/12 新設したばかりなので、MLメンバーを募集しています。# 特に 返事を書いてくれる側の方を強く募集
:-P
修正履歴
- 2005.02.20 ドキュメントを見直し、画像を活用した わかりやすい説明へと改善を行いました。
- 2002.07.11 (1.9.9) ライセンスを GNU LGPLに変更しました。
- 2002/06/19 (1.9.8) J2SE 1.4.0_01 に対応しました。なお -jarオプションには対応していません。
- 2001/06/29 (1.9.7a) Tomcat 3.2.2 + SUN Java2 SDK 1.3.1 Windows版 で動作確認を取りました。Windows
2000 SP2 でも動作確認を取りました。またそれを確認した際の設定ファイルをアーカイブに含めました。(ロードモジュールそのものは更新ありません)
- 2001/04/02 (1.9.7) 自己解凍GUIを作成。併せて サービスのパラメータがGUIで設定可能になりました。
- 2001/03/07 (1.9.6) 名前にまつわる不具合を修正。
- 2001/03/04 (1.9.5) JDK1.2.2 で動作しない不具合を修正。GPL版の方を正式版とし始めました。
- 2001/02/11 JMidoriServiceメーリングリストを新たに作成
- 2000/12/23 (1.9.2) ライセンスをGNU GPLに変更したβ版を公開開始
つっこみが入らなければ 時限的に正式版化する予定
(苦笑)
- 2000/12/22 jk_javaに関する記述を追記。ロードモジュールなどは一切変更なし
- 2000/12/16 (v006) Apache Tomcat 3.2.1 を動作させるためのFAQドキュメントを追記
(Webページのみ変更。ロードモジュールは一切変更無しです)
- 2000/08/19 (v006) 正式版としてリリース開始
v006 RC3 から全くなにも変更していません。含まれるドキュメントにRC3と記載ありますが無視してください
(^_^;)
- 2000/04/30 (v006 RC3) 変更 :-)
- 2000/04/26 (v004 RC2) WindowsNTからログオフ時
Java2 SDK 1.3 においては サービスが停止してしまう不具合を修正
- 2000/04/11 (v003 RC1)
サービスの実行時に引数指定が可能なように機能追加
Java2 SDK 1.3 RC2対応 (起動時のバージョンチェックをはずす)
→2000/04/26 WindowsNTからログオフ時 サービスが停止してしまう不具合に遭遇中。JavaVM一般で発生する現象らしいです。
- 1999/03/23 (v002β)
CLASSPATHがクラスパスに反映されるよう修正
- 1999/02/08 (v001β)
新規に作成し,βリリースをさせていただきます.幅広い意見を頂けれ
ば幸いです.
前作 『[みソ] NTサービス化OCX v004』のノウハウが生かされていると
自負しております.
Credits
- Yasuhiro TAKADA : Windows2000SP1で サービスの停止を行おうとする際に、『ローカルコンピュータのTomcatサービスを停止できません。エラー997:
重複したI/O処理を実行しています。』 というメッセージが出る不具合を報告+修正
- MASUOKA : JDK1.2.xで動作できなくなっていた不具合を報告+修正
ライセンス LICENSE
/**
* JMidoriService (Java Midori Service)
* Copyright (C) 1998-2002 Midori IGA
* (http://www01.u-page.so-net.ne.jp/db3/midori/midosoft.html)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
Miscellaneous
![SourceForge Logo](http://sourceforge.net/sflogo.php?group_id=22927)