2015-11-02 50 views
1

我有這段代碼用於從使用wicket的java Tomcat web開發執行腳本shell。駱駝exec從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; 
    } 
} 

我用它在檢票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

剛開始駱駝上下文不足以觸發路線。如果您想手動觸發路線,則可以使用camelContext.startRoute()方法。

順便說一下,恕我直言,這是一個最佳做法,爲每個應用程序啓動一個駱駝上下文。

相關問題