2

我一直在使用新的 Torquebox (JBOSS) 应用程序服务器,并且喜欢我目前所看到的,但是 ruby​​ 应用程序似乎与 java webapps 是隔离的。就像它们作为单独的 web 应用程序在孤岛中运行并且混合它们是模糊的,尽管我读到会话可以共享......这很酷。

我有一个以 Java EE Servlet JSP 样式构建的传统 Web 应用程序,我希望能够使用 ruby​​ 作为我的表示层逻辑,而不是正在使用的 JSP。

我应该能够从 Web 请求上下文运行 ruby​​ 资源。就像 apache mod_ruby 开始处理 rhtml...(目标:让 tomcat 或 JBoss 这样做,所以 trinidad 或 torquebox)

例如,我可以用 HelloWorld.rhtml 或 .rb 替换 HelloWorld.jsp(可以调用我的 java 包...)?它也可以调用我的 java 类,因为它是 JRuby ......

到目前为止,我可以单独创建 RoR 应用程序和 sinatra,但是......我想要 Java webapp 中的 ruby​​ 而不是 ruby​​ webapp 中的 Java。

有谁知道我现在问的问题是否可以用 Torquebox 或 Trinidad 实现?

4

2 回答 2

0

你当然可以做到,但你需要做一些练习来准备东西。

因为您希望它是使用 Ruby 的 Java Web 应用程序,而不是使用 Java 的 Ruby 应用程序,您只需将jruby-complete.jar添加到您的 CLASSPATH 中(假设您不需要任何 gem,您将拥有 stdlib - ERB 就在那里) . 如果你确实需要 gem,你可以用 Warbler 打包一个 gem.jar。

与在 Java 方面相比,您需要编写一个集成层,将您的MCV连接起来(对于 Ruby :))......例如,在控制器中“渲染”时,您需要从 Java 执行一些 Ruby 代码一个选项正在使用http://jruby.org/apidocs/org/jruby/embed/ScriptingContainer.html或者您可以(引导和)org.jruby.Ruby直接使用 API。

而不是获取 erb 输出并将其转换为 Java 字符串/io,这应该最终成为您的响应主体......当然这是一个“概念性”答案,将会有一些(也许很多)障碍需要解决马路。

于 2013-01-17T08:41:26.780 回答
0

你仍然会被 JSP 卡住。

一种选择是重用 JRuby 的 jar,但我怀疑这会增加很多。

我有一个以 Java EE Servlet JSP 样式构建的传统 Web 应用程序,我希望能够使用 ruby​​ 作为我的表示层逻辑,而不是正在使用的 JSP。

不去上班。Ruby 不用于演示。Rails 框架允许erb.html执行 ruby​​,但在页面加载时会发生一次。其余的主要是用于演示的 Rails Helpers/JQuery。

所以,让我们假设你得到了这个工作。你打算如何处理这些红宝石变量?我认为这会导致死胡同,因为您对 JSP 无能为力。

真正的问题是你想用Java\JavaScript 做不到的Ruby 做什么?

对于演示,我建议您研究有助于以 JSP 友好方式编​​写标记的方法。类似 IceFaces 的东西。根据您的建议,您仅限于表达语言。

于 2013-01-16T21:02:15.053 回答