- - PR -
weblogic6.0で外部コマンドの実行に失敗する
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-08-11 23:52
weblogic6.0(OS はWindows NT からアップグレードした
Windows 2000 Server)でサーブレットから Runtime.exec(String)で外部コマンドを呼び出しているのですが、 外部コマンドを絶対パスを指定して実行したときのみ コマンドの実行ができるのですが、そうでないと (環境変数のPATHを使って「hoge(.exe)」のように実行しようとすると) プロセスの生成に失敗したという例外が発生します。 このWeblogicはサービスから起動しているのですが、 startWebLogic.cmdからweblogicを起動したときは 「hoge」だけでコマンドの実行ができます。 また、Windows NT からアップグレードしないでインストール したWindows 2000 Server上では、サービスとして起動しても startWeblogic.cmdから実行しても、「hoge」だけで コマンドの実行ができます。 話をまとめると、WindowsのサービスからWeblogicを実行しているときに 外部コマンドを呼び出したとき、環境変数のPATHが 認識されていないことがあるのではないかと思うのですが、 http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/lang/Process.html に書かれているように、 「Runtime.exec の各メソッドは、特定のネイティブなプラットフォーム上の 特殊なプロセスではうまく動作しない場合があります」 ということになるのでしょうか? それとももっと確かめたほうが良いことがありますでしょうか? | ||||
|
投稿日時: 2005-08-12 00:13
PATH 環境変数の問題だと思います。サービス登録時にどのように登録していますか?
以下のように、ログから確認することもできます。 ####<1977/06/17 15:46:11:JST> <Info> <Management> <yourmachine> <myserver> <main> <system> <> <141034> <Java システム プロパティ: java.library.path = C:/bea61sp7/jdk131/bin;......................> | ||||
|
投稿日時: 2005-08-12 00:17
#オフトピックです
先日も触れましたが、 WLS6.0 は既にサポート終了しています。 出来る限り早い段階でサポート対象のバージョンへ移行することをお勧めします。 http://edocs.beasys.co.jp/e-docs/wls/certifications/certs/eol.html 最新版は 9.0 になります。 http://edocs.beasys.co.jp/e-docs/wls/docs90/index.html https://www.beasys.co.jp/BeaPortal/download/generalNew/begin.do?ID=1&VERSION_KEY=27 枯れていて安心できるのだと 8.1 になるでしょうか。 http://edocs.beasys.co.jp/e-docs/wls/docs81/index.html https://www.beasys.co.jp/BeaPortal/download/generalNew/begin.do?ID=1&VERSION_KEY=20 | ||||
|
投稿日時: 2005-08-12 04:35
そうですよね。 けれど、保守契約の更新をやめてしまって 新しくWeblogicを買うつもりはないとのことなのです。 | ||||
|
投稿日時: 2005-08-12 16:33
サービスの登録はinstallNtService.cmdを使いました。
java.library.pathを見てみたところ、 hoge.exeへのパスが通っておらず、 E:\\bea\\wlserver6.0\\bin;.;C:\\WINNT\\system32;C:\\WINNT; となっていました。 E:\\bea\\wlserver6.0\\binは-extrapathで指定されているものですが それ以降のパスはどこで指定されているものか不明です。 (システム環境変数はhoge.exeへのパスが通っています) また、先日サービスとして起動しても「hoge」だけで 実行できたサーバのログを見ると、hoge.exeへのパスが 通っていました。 そこで、一度、サービスをアンインストールして installNtService.cmd のset CMDLINEに -Djava.library.path=E:\\bea\\wlserver6.0\\bin;%PATH% を設定してサービスをインストールしたところ、 起動時のログにはhoge.exeへのパスが通っていました。 ところが、この状態でもhoge.exeは実行できません。 実行できない原因は何なのでしょうか? | ||||
|
投稿日時: 2005-08-12 17:10
WebLogic と切り離して考えてみましょう。
スタンドアロンの Java アプリケーションで、PATH 環境変数ではなく、-Djava.library.path オプションで指定したパスにあるコマンドを起動できますか? | ||||
|
投稿日時: 2005-08-22 16:08
起動できませんでした。 | ||||
|
投稿日時: 2005-08-22 17:38
>起動できませんでした。
ですよね。(すいません、わたしは未検証でした) JVM を起動する際に PATH環境変数に設定する必要があるのでしょう。 何事も問題の根本を出来る限りシンプルな状態で発生させるのが切り分けの近道です。 |