我有这个代码片段,用于使用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 + " !");
答案 0 :(得分:0)
刚刚启动驼峰上下文不足以触发路由。如果要手动触发路由,可以使用camelContext.startRoute()方法。
顺便说一句,恕我直言,最佳做法是为每个应用程序启动一个camel上下文。