使用JRuby替换Java EE Servlet Web应用程序中的JSP



我一直在玩新的torquebox(JBOSS)应用程序服务器,就像我到目前为止看到的一样,然而ruby应用程序似乎与java web应用程序分离。这就像它们作为单独的网络应用程序在竖井中运行,尽管我读到会话可以共享,但将它们混合在一起是不清楚的。。。这很酷。

我有一个以JavaEEServlet JSP风格构建的传统web应用程序,我希望能够使用ruby作为我的表示层逻辑,而不是正在使用的JSP。

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

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

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

有人知道我现在问的是Torquebox还是Trinidad吗?

您仍然会被JSP卡住。

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

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

不起作用。Ruby不用于表示。Rails框架允许erb.html执行ruby,但在加载页面时会发生一次。剩下的大部分是Rails Helpers/JQuery,用于演示。

所以,让我们假设你做到了。你打算如何处理那些ruby变量?我认为这将导致一条死胡同,因为使用JSP对它无能为力。

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

在演示中,我建议您研究一些可以帮助您以JSP友好的方式编写标记的东西。有点像冰脸。对于你建议要完成的任务,你只限于表达语言。

你当然可以做到,但你需要一点锻炼来准备。

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

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

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

相关内容

最新更新