使用Apache Camel进行页面重定向

时间:2016-11-04 09:24:31

标签: redirect apache-camel

我正在尝试开发一个将用户从page1重定向到page2的路由。

当用户访问网址时触发路由:http://localhost:8080/servlets/doSomething(第1页) 我希望它被重定向到http://google.com例如(第2页)

我在Camel中公开了一个servlet:

web.xml中的

class Buf(ctypes.c_void_p):
    def __new__(cls, size):
        return malloc(size)

    ...

    def __del__(self):
        ... 

        libc.free(self)

在骆驼语境中:

<servlet>
    <servlet-name>camelServlet</servlet-name>
    <servlet-class>org.apache.camel.component.servlet.CamelHttpTransportServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>camelServlet</servlet-name>
    <url-pattern>/servlets/*</url-pattern>
</servlet-mapping>

我尝试使用以下方式重定向:

<camel:from uri="servlet://doSomething?servletName=camelServlet" />

但得到java.net.ConnectException:连接超时:连接

3 个答案:

答案 0 :(得分:1)

只需发送并适当HTTP status code ,然后将您要重定向的网址放入HTTP标头&#34;位置&#34;。

在Camel Java中,这应该是这样的:

from("servlet://doSomething?servletName=camelServlet")
    .setHeader("Location", simple("http://www.google.com"))
    .setHeader(Exchange.HTTP_RESPONSE_CODE, 302);

答案 1 :(得分:0)

您可以尝试此代理路由:

    <route id="ProxyRoute">
        <from uri="jetty:http://0.0.0.0:8080/servlets/doSomething?matchOnUriPrefix=true&amp;continuationTimeout=900000&amp;httpClient.timeout=900000"/>
        <to uri="jetty:http://google.com?bridgeEndpoint=true&amp;throwExceptionOnFailure=false&amp;continuationTimeout=900000&amp;httpClient.timeout=900000"/>
    </route>

答案 2 :(得分:0)

非常简单的例子:

public void redirectFromSuccess(Exchange exchange) {
    exchange.getIn().setHeader(Exchange.HTTP_METHOD, constant("POST")); 
    exchange.getIn().setHeader(Exchange.HTTP_URI,"http://www.google.com");
    exchange.getIn().setHeader(Exchange.HTTP_RESPONSE_CODE,"301");
}