【问题标题】:Page redirection using Apache Camel使用 Apache Camel 进行页面重定向
【发布时间】:2021-03-06 02:00:38
【问题描述】:

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

当用户访问 url 时触发路由:http://localhost:8080/servlets/doSomething (page1) 我希望它被重定向到 http://google.com 例如 (page2)

我在 Camel 中公开了一个 servlet:

在 web.xml 中:

<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" />

我尝试使用重定向:

<camel:to uri="http://google.com?bridgeEndpoint=true" />

但得到 java.net.ConnectException: Connection timed out: connect

【问题讨论】:

    标签: redirect apache-camel


    【解决方案1】:

    只需发送和适当的HTTP status code 并将您要重定向到的 URL 放入 HTTP 标头“位置”中。

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

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

    【讨论】:

    • 感谢您的回复,但仍然出现异常:java.net.ConnectException
    • 哪个部分出现异常?浏览器?
    • 当然,删除 google.com?bridgeEndpoint=true" />。骆驼应该自动回复...
    【解决方案2】:

    你可以试试这个代理路由:

        <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>
    

    【讨论】:

      【解决方案3】:

      非常简单的例子:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-11
        • 2011-01-27
        • 2016-10-17
        相关资源
        最近更新 更多