2016-03-08 52 views
1

我已經使用apache camel cxf獨立WebService。它監聽90039004端口,然後使用類似這樣的路線:Apache Camel CXF WebService與前端Web應用程序

<route> 
    <from uri="cxf:bean:queueManagerEndpoint" /> 
    <to uri="direct:callAddToqueueMethod" /> 
    </route> 

它處理WebService電話。

運行應用程序爲:

org.apache.camel.spring.Main main = new org.apache.camel.spring.Main(); 
    instance = main; 
    main.enableHangupSupport(); 
    System.out.println("Starting camel..."); 
    main.run(args); 

我想補充一些統計頁面,在這裏我將能夠顯示有多少電話是由和他們怎麼看。 在camel docummentation獲得這個唯一的辦法是:

web.xml

<web-app> 

    <servlet> 
    <servlet-name>CamelServlet</servlet-name> 
    <display-name>Camel Http Transport Servlet</display-name> 
    <servlet-class>org.apache.camel.component.servlet.CamelHttpTransportServlet</servlet-class> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>CamelServlet</servlet-name> 
    <url-pattern>/services/*</url-pattern> 
    </servlet-mapping> 

</web-app> 

RouteBuilder

from("servlet:hello?matchOnUriPrefix=true").process(new Processor() { 
    public void process(Exchange exchange) throws Exception { 
     String contentType = exchange.getIn().getHeader(Exchange.CONTENT_TYPE, String.class); 
     String path = exchange.getIn().getHeader(Exchange.HTTP_URI, String.class); 
     path = path.substring(path.lastIndexOf("/")); 

     assertEquals("Get a wrong content type", CONTENT_TYPE, contentType); 
     // assert camel http header 
     String charsetEncoding = exchange.getIn().getHeader(Exchange.HTTP_CHARACTER_ENCODING, String.class); 
     assertEquals("Get a wrong charset name from the message heaer", "UTF-8", charsetEncoding); 
     // assert exchange charset 
     assertEquals("Get a wrong charset naem from the exchange property", "UTF-8", exchange.getProperty(Exchange.CHARSET_NAME)); 
     exchange.getOut().setHeader(Exchange.CONTENT_TYPE, contentType + "; charset=UTF-8"); 
     exchange.getOut().setHeader("PATH", path); 
     exchange.getOut().setBody("<b>Hello World</b>"); 
    } 
}); 

而且我相信它會做的工作,但我不希望用StringBuilder建立html頁面是否可以通過jsp頁面與data templateexchange.getOut().setBody()

回答

1

您可以使用freemarker,一個基於java的模板引擎基於模板和更改數據生成文本輸出。 此模板文件與jsp類似,您可以在其中定義文本的格式,並可以使用bean屬性作爲該模板中動態數據的佔位符。

下面的成分參與

  1. 文本格式 - 如何將數據應該看起來像[模板]
  2. 數據 - 什麼是需要的格式生成數據[產品型號]
  3. 輸出發電機 - 閱讀模板,通過數據模型和獲取文本輸出[Freemarker的庫]

A sample working example to work with freemarker