Camel exec从shell脚本返回null String

时间:2015-11-02 11:37:11

标签: java apache-camel wicket

我有这个代码片段,用于使用wicket从java Tomcat Web开发执行脚本shell。

public class CallingScript  extends RouteBuilder {
    String result;

    @Override
    public void configure() throws Exception {
        from("direct:exec")
                .to("exec:ls?args=/home/foo/")
                .process(new Processor() {
                    public void process(Exchange exchange) throws Exception {
                        ExecResult execresult = exchange.getIn().getBody(ExecResult.class);
                        result = execesult.toString();
                    }
                });
    }
    public String getResult() {
        return result;
    }
}

我在Wicket 7.0.0的Onclick方法中使用它,没有生成错误消息但是exec路由总是返回一个空字符串。

    CamelContext camelContext = new DefaultCamelContext();
    CallingScript call = new CallingScript();
    try {
        camelContext.addRoutes(call);
    } catch (Exception e) {
        e.printStackTrace();
    }

    try {
        camelContext.start();
    } catch (Exception e) {
        e.printStackTrace();
    }
    try {
        camelContext.stop();
    } catch (Exception e) {
        e.printStackTrace();
    }
    String res = call.getResult();
    getSession().info("directory contents " + res + " !");

1 个答案:

答案 0 :(得分:0)

刚刚启动驼峰上下文不足以触发路由。如果要手动触发路由,可以使用camelContext.startRoute()方法。

顺便说一句,恕我直言,最佳做法是为每个应用程序启动一个camel上下文。