ランタイム exec を使用して、サーブレットから psservice.exe と plink.exe を実行しようとしています。これは、windows および unix aix を実行しているリモート コンピューターでサービスを開始または停止するために使用されます。
コマンドプロンプトから実行できるようにシステム変数を設定しました。これらのコマンドは、コマンド プロンプトと Java プログラムから完全に実行されます。
リモートWindowsマシンのサーブレットで以下のコードを使用しています
Runtime.getRuntime().exec(serverPropLoader.getServerProperties("psservice \\\\172.xx.xx.xx -u username -p password stop MySQL"));
リモートUNIX aix 5.3マシンのサーブレットで以下のコードを使用しています
Runtime.getRuntime().exec(serverPropLoader.getServerProperties("PLINK.exe -ssh -pw "password" username@172.xx.xx.xx /home/mysql/stopservice.sh"));
以下は私の観察です:
Tomcat6 を使用して Eclipse (ver 3.4.2) から上記のステートメントを実行すると、完全に正常に動作しますが、Web アプリを WAR としてエクスポートし、手動で Tomcat6 にデプロイすると、実行されません。(私はそれを私のシステムや他のシステムに展開しようとしました)
これらのコマンドをバッチファイルに入れてサーブレットから呼び出してみましたが、成功しませんでした。バッチ ファイルから「net」および「sc」コマンドは機能していますが、pservice および plink コマンドを実行できません。また、「sc」コマンドはローカル プロセスに対してのみ機能します。
サーブレットの実行後、Windows タスク マネージャーで psservice.exe と plink.exe を確認できますが、ローカルおよびリモート システムで必要なサービスが開始または停止していません。