ページの先頭行へ戻る
 Apcoordinatorユーザーズガイド

12.3.3 コマンド実行サービスアダプタ

指定のコマンドを実行するサービスアダプタです。

AsyncServiceFactoryインタフェースで指定したサービス名が、asyncマップで定義したcommanderタグのname属性と一致する場合に、コマンド実行サービスアダプタを生成します。本サービスアダプタで実行するコマンドは、独立したプロセスにて実行します。本サービスアダプタでは、直接呼び出し、および、突き放しによる呼び出しを行うことができます。

次は、MyCommandというサービス名のアダプタを直接呼び出しするasyncマップの定義例です。

<asyncMap>
  <commander name="MyCommand" />

次は、上記asyncマップのサービスを利用するプログラム例です。

  AsyncServiceFactory factory
   = (AsyncServiceFactory)InitialFactory.createFactory(context, InitialFactory.ASYNCSERVICEFACTORY);
  // commanderタグのname属性がMyCommandの環境を参照しサービスアダプタインスタンスを生成する。
  AsyncServiceAdapter adapter = factory.createAsyncServiceAdapter("MyCommand");
  adapter.begin(null);
  String [] command = {"myCommand", "para1", "para2"};
  // executeメソッドを呼び出す。
  adapter.execute(command, null);
  ...

beginメソッド

サービスアダプタを初期化します。

引数へはnullを指定します。

executeメソッド

指定されたコマンドを実行します。

コマンドは、java.lang.Runtimeクラスのexecメソッドを利用して実行します。

第一引数へは実行するコマンドを指定します。

コマンドの指定がjava.lang.Stringクラス、または、java.lang.Stringクラスの配列以外が指定された場合には、指定クラスのtoStringメソッドの結果をコマンドとして実行します。

第二引数へはnullを指定します。

getResultメソッド

AsyncServiceExecuteResultを返します。

実行結果を参照するには、AsyncServiceExecuteResultクラスのgetValueメソッドを使用します。

実行結果には、実行したコマンドプロセスの標準出力ストリーム、または、エラー出力ストリームから取得した値を返します。

Systemwalker OperationMGRの利用

Systemwalker OperationMGRで提供されているコマンドを指定することにより、ジョブの投入を行うなど、Systemwalker OperationMGR の機能を利用することが可能となります。

次は、ジョブファイルにjob.bat、そのファイルに渡すパラメタとして0822および1000を指定するプログラム例です。

  AsyncServiceFactory factory
   = (AsyncServiceFactory)InitialFactory.createFactory(context, InitialFactory.ASYNCSERVICEFACTORY);
  // commanderタグのname属性がMyCommandの環境を参照しサービスアダプタインスタンスを生成する。
  AsyncServiceAdapter adapter = factory.createAsyncServiceAdapter("MyCommand");
  adapter.begin(null);
  String [] command = {"qsub", "job.bat", "0822", "1000"};
  // executeメソッドを呼び出す。
  adapter.execute(command, null);
  ...

以下に、Systemwalker OperationMGRを利用する場合の構成を図示します。