Apache Camel Route返回一个网页

时间:2015-04-03 12:57:05

标签: apache apache-camel

我是Apache Camel的新手,我很难得到这个。 我已经浏览了互联网,但找不到任何有价值的东西。 我也有“骆驼在行动”,所以如果有人知道书中可能有用的部分,请告诉我。

这就是我想要做的事情:

(1)用户点击网络服务

(2)作为响应,Web服务返回一个网页

我知道我必须使用HTTP并且Jetty组件是我最好的选择。

这是我的路线类:

public class MyRoute extends RouteBuilder {

@Override
public void configure() throws Exception {

    /*
     * Basic Route
     */
           from("jetty://http://localhost:8080/ExchangeSendPage")
           //.setHeader("webPageFileName", constant("index.html"))
           .process(new myProcessor()); 
           .to()


    }

}); 

}

这是我的处理器类:

public class myProcessor implements Processor {

public void theprocess (Exchange exchange) throw Exception {

    return ("ExchangeSendPage.html"); 
}

我完全迷失了,可以使用以下指导: (1)如何设置我的localhost,当用户在自己的机器上时,他们只需点击.html文件?我会用xpath吗?现在我没有.html文件去任何地方。我确定它甚至没有附加到本地主机。 (2)如何将html页面附加到处理器?或者这是否是正确的方法呢? (3).to应该转到它要击中的服务器的URL吗?这会被视为终点吗?

如果有什么问题让我知道,请告诉我。

1 个答案:

答案 0 :(得分:2)

This博客文章详细介绍了如何使用camel和jetty组件提供动态网页。总之,你必须填写交换机构:

 public void process(Exchange exchange) throws Exception {
    exchange.getOut().setBody("<html><body>Hello world</body></html>");
}

修改

我很确定博客示例有效。请使用以下代码克隆以下回购:

git clone https://github.com/mjabali/Jetty-Sample

使用

运行
mvn camel:run

请将此与您的实施进行比较,尤其是驼峰上下文文件https://github.com/mjabali/Jetty-Sample/blob/master/src/main/resources/META-INF/spring/camel-context.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:camel="http://camel.apache.org/schema/spring" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd        http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
  <camelContext xmlns="http://camel.apache.org/schema/spring">
    <package>com.fusesource.fusebyexample</package>
    <route id="Jetty_Sample">
        <from uri="jetty:http://localhost:8888/myBookService"/>
        <log logName="HTTP LOG" loggingLevel="INFO" message="HTTP REQUEST: ${in.header.bookid}"/>
        <process ref="myBookService"/>
    </route>
</camelContext>

<bean class="com.fusesource.fusebyexample.myBookService" id="myBookService"/>

</beans>