2016-03-08 4 views
1

Я сделал автономный WebService, работающий с apache camel cxf. Он прослушивает 9003 и 9004 порта, а затем с использованием маршрутов, как это:Apache Camel CXF WebService с интерфейсом веб-приложения

<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>"); 
    } 
}); 

И я считаю, что это будет делать эту работу, но я не хотел бы построить html страницу с StringBuilder можно ли сдать jsp с data template до exchange.getOut().setBody()?

ответ

1

Вы можете использовать freemarker, java-механизм шаблонов для генерации текстового вывода на основе шаблонов и изменения данных. Этот файл шаблона похож на jsp, где вы можете определить формат текста и можете использовать свойства bean в качестве держателей места для динамических данных в этом шаблоне.

Ниже компоненты участвуют

  1. Текстовый формат - Как данные должны выглядеть [Шаблон]
  2. данных - то, что данные, которые должны быть сформированы в требуемом формате [Модель данных]
  3. Выход Генератор - прочитать шаблон, передать модель данных и получить вывод текста [Freemarker библиотека]

A sample working example to work with freemarker

Смежные вопросы