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)

echodir 等命令只能通过操作系统的命令解释器来执行。本例演示了如何在 Windows 中执行此类命令 - echo -。

from("direct:exec").to("exec:cmd?args=/C echo echoString")
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.