2011-10-04 91 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