2015-04-21 91 views
0

在我們本地網絡的交互ServletApplication我們有一個通過流行Web瀏覽器訪問現有網絡IDE類型的應用
我想用Jboss的FUSE ESB是/ ACT當地和該雲/任何網絡之間的隧道。
因此,我們通過一個網絡瀏覽器客戶端可以無縫地連接到瀏覽器所在網絡的應用程序。通過ESB an始終發送req-res到客戶端瀏覽器。通過JBoss的保險絲ESB的翻過多個網絡

我使用的proxy approach

  • 我輸入一個網址到瀏覽器,並重定向我使用ESB僅針對該應用程序第一次。
  • 然後我開始以正常的方式與應用程序進行交互。但不通過ESB。

這是JBOSS-FUSE-ESB的可能性,還是這個任務的錯誤工具?

<camelContext trace="true" id="blueprintContext" xmlns="http://camel.apache.org/schema/blueprint"> 
<route id="REQUEST"> 
    <from uri="jetty:http://0.0.0.0:1805/myRemoteApp?matchOnUriPrefix=true" id="TO-APP"> 
     <description/> 
    </from> 
    <to uri="jetty:http://my.cpny.com:1804/myapp/mainServlet?bridgeEndpoint=true&amp;throwExceptionOnFailure=false" id="RealServer-IN"/>   
</route> 

任何建議都非常歡迎。

回答

2

聽起來像你應該發送一個HTTP重定向狀態碼與網絡瀏覽器應該使用的URL直接與服務器交互,而不使用ESB。

您可以設置http狀態代碼並使用Camel消息上的標頭重定向位置,例如在第一次調用之後。

<route id="REQUEST"> 
    <from uri="jetty:http://0.0.0.0:1805/myRemoteApp?matchOnUriPrefix=true" id="TO-APP"> 
     <description/> 
    </from> 
    <to uri="jetty:http://my.cpny.com:1804/myapp/mainServlet?bridgeEndpoint=true&amp;throwExceptionOnFailure=false" id="RealServer-IN"/>   
    .. // add logic here to compute the new url and set that as Location header. And then set a status code 30x for redirect 
    <setHeader headerName="HttpStatusCode"><constant>300</constant></setHeader> 
    <setHeader headerName="Location"><constant>http:blabla</constant></setHeader> 
</route> 
+0

因此它不可能在第一次重定向後繼續使用ESB嗎? – yokodev

+0

我不知道應用程序是如何告訴camel什麼URL(響應)是/因爲現在req-res只是應用程序,並且webBrowser ESB不在圖片中 – yokodev

+0

現在在第一次重定向之後(安全令牌生成等等)url保持不變,那麼幾乎所有東西都是ajax。 – yokodev