99.7. 使用示例
99.7.1. 执行字数(Linux)
以下示例执行 wc
(字数、Linux)来计算文件 /usr/share/dict/words
中的词语。词语 count (output)写入 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 } });
99.7.2. 执行 java
以下示例使用 2 参数执行 java
: -server
和 -version
,只要 java
在系统路径中。
from("direct:exec") .to("exec:java?args=-server -version")
以下示例在 c:\temp
中执行 java
,带有 3 参数: -server
、-version
和 sytem 属性 user.name
。
from("direct:exec") .to("exec:c:/program files/jdk/bin/java?args=-server -version -Duser.name=Camel&workingDir=c:/temp")
99.7.3. 执行 Ant 脚本
以下示例通过构建文件 CamelExecBuildFile.xml
执行 Apache Ant (仅限 Windows),只要 ant.bat
处于系统路径中,并且 CamelExecBuildFile.xml
位于当前目录中。
from("direct:exec") .to("exec:ant.bat?args=-f CamelExecBuildFile.xml")
在下一个示例中,aut .bat 命令使用
-l
将其输出重定向到 CamelExecOutFile.txt
。文件 CamelExecOutFile.txt
用作 out 文件,并带有 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 } });
99.7.4. 执行 回显
(Windows)
echo
和 dir
等命令只能通过操作系统的命令解释器来执行。本例演示了如何在 Windows 中执行此类命令 - echo
-。
from("direct:exec").to("exec:cmd?args=/C echo echoString")