Fuse 6 is no longer supported
As of February 2025, Red Hat Fuse 6 is no longer supported. If you are using Fuse 6, please upgrade to Red Hat build of Apache Camel.第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>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-exec</artifactId>
<version>${camel-version}</version>
</dependency>
${camel-version}
は、実際のバージョンの Apache Camel (2.3.0 以降)に置き換える必要があります。
URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
exec://executable[?options]
exec://executable[?options]
ここでの
executable
は、実行されるシステムコマンドの名前またはファイルパスです。実行可能ファイル名を使用する場合(例: exec:java
)、実行ファイルはシステムパスになければなりません。
URI オプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | デフォルト値 | 説明 |
---|---|---|
args
|
null
|
実行可能ファイルの引数。引数は、
" で引用できる 1 つまたは複数のスペース区切りトークンにすることができます。たとえば、args="arg 1" arg2 は 2 つの引数 arg 1 と arg2 を使用します。引用符を含めるには、"" を使用します。例: 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
で定義されています。
名前 | タイプ | メッセージ | 説明 |
---|---|---|---|
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
型コンバーター をサポートします。
From | 終了 |
---|---|
ExecResult
|
java.io.InputStream
|
ExecResult
|
文字列
|
ExecResult
|
byte []
|
ExecResult
|
org.w3c.dom.Document
|
単語数(Linux)の実行 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
以下の例では、
wc
(単語数、Linux)を実行して /usr/share/dict/words
ファイルの単語をカウントします。単語 count (出力)は、wc
のスタンドアロン出力ストリームで書かれています。
Java の実行 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
以下の例では、
java
がシステムパスにあると、-server
と -version
の 2 つの引数を指定して java
を実行します。
from("direct:exec") .to("exec:java?args=-server -version")
from("direct:exec")
.to("exec:java?args=-server -version")
以下の例では、
-server
、-version
、および sytem プロパティー user.name
の 3 つの引数を使用して、c:/temp
で java
を実行します。
from("direct:exec") .to("exec:c:/program files/jdk/bin/java?args=-server -version -Duser.name=Camel&workingDir=c:/temp")
from("direct:exec")
.to("exec:c:/program files/jdk/bin/java?args=-server -version -Duser.name=Camel&workingDir=c:/temp")
Ant スクリプトの実行 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
以下の例では、
ant.bat
がシステムパスにあり、CamelExecBuildFile.xml
が現在のディレクトリーにあると、CamelExecBuildFile.xml
ビルドファイルで Apache Ant (Windows のみ)を実行します。
from("direct:exec") .to("exec:ant.bat?args=-f CamelExecBuildFile.xml")
from("direct:exec")
.to("exec:ant.bat?args=-f CamelExecBuildFile.xml")
以下の例では、
ant.bat
コマンドは出力を -l
を使用する CamelExecOutFile.txt
にリダイレクトします。CamelExecOutFile.txt
ファイルは、outFile=CamelExecOutFile.txt
ファイルとして使用されます。この例では、ant.bat
がシステムパスにあり、CamelExecBuildFile.xml
が現在のディレクトリーにあることを前提としています。
echo の実行(Windows) リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
echo
や dir
などのコマンドは、オペレーティングシステムのコマンドインタープリターでのみ実行できます。この例は、Windows でこのようなコマンド echo
を実行する方法を示しています。
from("direct:exec").to("exec:cmd?args=/C echo echoString")
from("direct:exec").to("exec:cmd?args=/C echo echoString")