第46章 exec


exec コンポーネント

Apache Camel 2.3 で利用可能
exec コンポーネントは、システムコマンドを実行するために使用できます。

Dependencies

Maven ユーザーは以下の依存関係を pom.xml に追加する必要があります。
<dependency>
  <groupId>org.apache.camel</groupId>
  <artifactId>camel-exec</artifactId>
  <version>${camel-version}</version>
</dependency>
Copy to Clipboard Toggle word wrap
${camel-version} は、実際のバージョンの Apache Camel (2.3.0 以降)に置き換える必要があります。

URI 形式

exec://executable[?options]
Copy to Clipboard Toggle word wrap
ここでの executable は、実行されるシステムコマンドの名前またはファイルパスです。実行可能ファイル名を使用する場合(例: exec:java)、実行ファイルはシステムパスになければなりません。

URI オプション

Expand
名前 デフォルト値 説明
args null
実行可能ファイルの引数。引数は、" で引用できる 1 つまたは複数のスペース区切りトークンにすることができます。たとえば、args="arg 1" arg2 は 2 つの引数 arg 1arg2 を使用します。引用符を含めるには、"" を使用します。例: args=""arg 1"" arg2 は引数 "arg 1" および arg2 を使用します。
workingDir null コマンドを実行するディレクトリー。null の場合、現在のプロセスの作業ディレクトリーが使用されます。
timeout Long.MAX_VALUE 実行可能ファイルを終了するまでの時間(ミリ秒単位)。タイムアウト内に実行が終了していない場合、コンポーネントは終了リクエストを送信します。
outFile null 実行ファイルによって作成されたファイルの名前。出力と見なす必要があります。outFile が設定されていない場合、実行可能ファイルの標準出力(stdout)は出力とみなされます。
binding DefaultExecBinding インスタンス レジストリー の org.apache.commons.exec.ExecBinding への 参照
commandExecutor DefaultCommandExecutor インスタンス コマンドの実行をカスタマイズする レジストリーorg.apache.commons.exec.ExecCommandExecutor への参照。デフォルトのコマンドエグゼキューターは、commons-exec ライブラリー を使用します。実行したすべてのコマンドにシャットダウンフックを追加します。
useStderrOnEmptyStdout false stdout が空の場合、このコンポーネントは Camel Message Body に stderr が設定されることを示すブール値。この動作は、デフォルトでは無効になっています(false)。

メッセージヘッダー

サポートされるヘッダーは org.apache.camel.component.exec.ExecBinding で定義されています。
Expand
名前 タイプ メッセージ 説明
ExecBinding.EXEC_COMMAND_EXECUTABLE 文字列 in 実行する system コマンドの名前。URI の 実行ファイル を上書きします。
ExecBinding.EXEC_COMMAND_ARGS java.util.List<String> in 実行可能ファイルの引数。引数は文字通りに使用され、引用は適用されません。URI の既存 引数 を上書きします。
ExecBinding.EXEC_COMMAND_ARGS 文字列 in Camel 2.5: 実行可能ファイルの引数は、各引数が空白文字で区切られた Single 文字列として指定されます(URI オプションの引数を参照)。引数は文字通りに使用され、引用は適用されません。URI の既存 引数 を上書きします。
ExecBinding.EXEC_COMMAND_OUT_FILE 文字列 in 実行ファイルによって作成されたファイルの名前。実行可能ファイルの出力と見なす必要があります。URI 内の既存の outFile を上書きします。
ExecBinding.EXEC_COMMAND_TIMEOUT long in 実行可能ファイルを終了するまでの時間(ミリ秒単位)。URI の既存の タイムアウト を上書きします。
ExecBinding.EXEC_COMMAND_WORKING_DIR 文字列 in コマンドを実行するディレクトリー。URI 内の既存の workingDir を上書きします。
ExecBinding.EXEC_EXIT_VALUE int out このヘッダーの値は、実行ファイルの 終了値 です。ゼロ以外の終了値は、通常、異常な終了を示します。終了値は OS に依存することに注意してください。
ExecBinding.EXEC_STDERR java.io.InputStream out このヘッダーの値は、実行可能ファイルの標準エラーストリーム(stderr)を参照します。stderr が書き込まれていない場合、値は null になります。
ExecBinding.EXEC_USE_STDERR_ON_EMPTY_STDOUT boolean in stdout が空の場合、このコンポーネントは Camel Message Body に stderr が設定されることを示します。この動作は、デフォルトでは無効になっています(false)。

メッセージボディー

Exec コンポーネントが、java.io.InputStream 変換できるメッセージボディーの を受信する場合、標準入力(stdin)を介して実行可能ファイルに入力を提供するために使用されます。実行後、メッセージボディー は実行の結果です。つまり、stdout、stderr、終了値、および out ファイルが含まれる org.apache.camel.components.exec.ExecResult インスタンスです。このコンポーネントは、便宜上、以下の ExecResult 型コンバーター をサポートします。
Expand
From 終了
ExecResult java.io.InputStream
ExecResult 文字列
ExecResult byte []
ExecResult org.w3c.dom.Document

単語数(Linux)の実行

以下の例では、wc (単語数、Linux)を実行して /usr/share/dict/words ファイルの単語をカウントします。単語 count (出力)は、wc のスタンドアロン出力ストリームで書かれています。
from("direct:exec")
.to("exec:wc?args=--words /usr/share/dict/words")
.process(new Processor() {
     public void process(Exchange exchange) throws Exception {
       // By default, the body is ExecResult instance
       assertIsInstanceOf(ExecResult.class, exchange.getIn().getBody());
       // Use the Camel Exec String type converter to convert the ExecResult to String
       // In this case, the stdout is considered as output
       String wordCountOutput = exchange.getIn().getBody(String.class);
       // do something with the word count
     }
});
Copy to Clipboard Toggle word wrap

Java の実行

以下の例では、java がシステムパスにあると、-server-version の 2 つの引数を指定して java を実行します。
from("direct:exec")
.to("exec:java?args=-server -version")
Copy to Clipboard Toggle word wrap
以下の例では、-server-version、および sytem プロパティー user.name の 3 つの引数を使用して、c:/tempjava を実行します。
from("direct:exec")
.to("exec:c:/program files/jdk/bin/java?args=-server -version -Duser.name=Camel&workingDir=c:/temp")
Copy to Clipboard Toggle word wrap

Ant スクリプトの実行

以下の例では、ant.bat がシステムパスにあり、CamelExecBuildFile.xml が現在のディレクトリーにあると、CamelExecBuildFile.xml ビルドファイルで Apache Ant (Windows のみ)を実行します。
from("direct:exec")
.to("exec:ant.bat?args=-f CamelExecBuildFile.xml")
Copy to Clipboard Toggle word wrap
以下の例では、ant.bat コマンドは出力を -l を使用する CamelExecOutFile.txt にリダイレクトします。CamelExecOutFile.txt ファイルは、outFile=CamelExecOutFile.txt ファイルとして使用されます。この例では、ant.bat がシステムパスにあり、CamelExecBuildFile.xml が現在のディレクトリーにあることを前提としています。
from("direct:exec")
.to("exec:ant.bat?args=-f CamelExecBuildFile.xml -l CamelExecOutFile.txt&outFile=CamelExecOutFile.txt")
.process(new Processor() {
     public void process(Exchange exchange) throws Exception {
        InputStream outFile = exchange.getIn().getBody(InputStream.class);
        assertIsInstanceOf(InputStream.class, outFile);
        // do something with the out file here
     }
  });
Copy to Clipboard Toggle word wrap

echo の実行(Windows)

echodir などのコマンドは、オペレーティングシステムのコマンドインタープリターでのみ実行できます。この例は、Windows でこのようなコマンド echo を実行する方法を示しています。
from("direct:exec").to("exec:cmd?args=/C echo echoString")
Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat