При использовании компонента exec
можно указывать аргументы inline, а не устанавливать их в ExecBinding.EXEC_COMMAND_ARGS
?
Например, у меня есть этот маршрут:
from("seda:getPolicyListStart")
.process(new Processor() {
public void process(Exchange e) {
ClientRequestBean requestBean = (ClientRequestBean)e.getIn().getBody();
List<String> args = new ArrayList<String>();
args.add(requestBean.getClient());
args.add(requestBean.getSort());
e.getOut().setHeader(ExecBinding.EXEC_COMMAND_ARGS, args);
}
})
.to("exec:some_command?useStderrOnEmptyStdout=true")
.convertBodyTo(String.class)
.log("Executed OS cmd and received: ${body}")
Однако я бы подумал, что мог бы использовать язык простых выражений, чтобы упростить его следующим образом:
from("seda:getPolicyListStart")
.to("exec:some_command?useStderrOnEmptyStdout=true&args=${body.client} ${body.sort}")
.convertBodyTo(String.class)
.log("Executed OS cmd and received: ${body}")
Аналогично тому, как вы можете использовать File File (подмножество Simple) при использовании File Component.
Возможно ли это? Если нет, можно ли упростить первый пример?
ОБНОВЛЕНИЕ [решение]:
from(requestNode)
.routeId(routeId)
.recipientList(simple("exec:"+osCmd+"?useStderrOnEmptyStdout=true&args=${body.client}"))
.convertBodyTo(String.class)
.log("Executed OS cmd and received: ${body}")
.to(responseNode);
Спасибо.