2016-11-04 52 views
0

我正在嘗試開發一個將用戶從page1重定向到page2的路由。當用戶訪問的URL使用Apache Camel的頁面重定向

路由觸發:http://localhost:8080/servlets/doSomething(第1頁) ,我希望它被重定向到http://google.com例如(第2頁)

我在駱駝露出一個servlet:

在網頁.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:連接超時:連接

回答

1

簡單地發送和適當HTTP status code,把要重定向的URL中HTTP頭「位置」。

在駱駝Java中,這應該是這樣的:

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

謝謝您的回覆,但仍然得到例外:java.net .ConnectException – S19

+0

哪部分出現異常?瀏覽器? – Mektoub

+0

當然,刪除。駱駝應該自動回覆... – Mektoub

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>