带有前端Web应用程序的Apache Camel CXF WebService

时间:2016-03-08 07:35:05

标签: java apache-camel cxf

我已使独立WebServiceapache camel cxf合作。它在90039004端口上侦听,然后使用这样的路由:

   <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的{​​{1}}页面传递给data template

1 个答案:

答案 0 :(得分:1)

您可以使用freemarker,一个基于Java的模板引擎,根据模板和更改数据生成文本输出。 此模板文件类似于jsp,您可以在其中定义文本的格式,并可以使用bean属性作为该模板中动态数据的占位符。

涉及以下组件

  1. 文本格式 - 数据的外观如何[模板]
  2. 数据 - 以所需格式[数据模型]
  3. 生成的数据是什么
  4. 输出生成器 - 读取模板,传递数据模型并获取文本输出[Freemarker library]
  5. A sample working example to work with freemarker