2011-10-04 41 views
0

我想逐漸將應用程序從舊Java過渡到新的Rails應用程序。數據流看起來像Rails作爲過濾反向代理

user -> browser -> new rails -> old java 

也就是說,新的Rails應用程序將充當反向代理到舊的應用程序,而用戶永遠不會是原來的應用程序的更聰明。

隨着更多功能遷移到rails應用程序,java應用程序將越來越少使用。

我很熟悉用於從其他應用程序請求資源的Net :: HTTP類,但大多數示例過於簡化,並且不便於轉換。功能齊全的寶石就能夠

  • 處理常見的HTTP動詞
  • 通和保留餅乾
  • 重寫HTML從舊的應用程序(例如,舊的應用程序將有 HREF =「/事/ foo.html「,並且新應用程序將具有 」/newpath/bar.html「)
  • 具有可配置的會話感知(將會話ID與 java應用程序關聯在一起,這樣,如果刪除了rails會話, 它可以回調到註銷的Java應用程序)

表現不是一個大問題。

任何指向這種寶石的指針?它可能會被歸類爲某種反向代理,man-in-the-middle,過濾器等

回答

0

我建議不要在Rails本身中這樣做,而是直接在您的web服務器(例如Apache)

我一直在研究一個大型項目,將Java網站遷移到Ruby,並且爲此目的一直使用Apache mod_rewrite和mod_proxy。

所以流量爲

user -> browser -> apache -> passenger or Tomcat 

內使用的Apache模塊本身意味着我們並不需要使用任何Rails的堆棧(以及相關的CPU /內存/線程)。它還使我們能夠滿足您的一項要求,以確保「用戶永遠不會成爲原始應用程序的明智之選」

會話管理是唯一棘手的部分;我介紹了Java和Rails應用程序都可以讀取的cookie,並且使用cookie的存在告訴Ruby或Java,如果用戶已登錄。這樣,Ruby和Java就不需要嘗試管理彼此的會話。

希望一些證明有幫助嗎?

+0

Upvoted,因爲那是一些不能在Rails應用程序中完成的事情,不是2011年,也不是現在。現在我們有了node.js,從那時起我們爲IO重型應用程序提供了EventMachine。 – Macario