2012-11-17 45 views
2

我一直在玩新torquebox(JBOSS),應用服務器和喜歡我所看到的,到目前爲止,以取代JSP然而紅寶石的應用程序似乎是從Java web應用隔離。這就像他們作爲單獨的web應用程序在孤島中運行並將它們混合在一起,雖然我讀到會話可以被共享......這很酷。使用JRuby在Java EE的Servlet的webapp

我已經使用Java EE的Servlet JSP風格傳統的web應用程序,我希望能夠用紅寶石作爲我的表現層邏輯,而不是正在使用的JSP。

我應該能夠從web請求上下文運行ruby資源。就像Apache mod_ruby開始處理rhtml ...(目標:讓tomcat或JBoss做到這一點,使得特立尼達或扭矩箱)

例如,我可以替換HelloWorld.jsp(可以調用我的Java包.. 。) 與HelloWorld.rhtml或.rb?它也可以打電話給我的Java類,因爲它是JRuby ...

截至目前我可以創建RoR應用程序單獨和sinatra,但...我想ruby在Java Web應用程序而不是Java的Ruby Web應用程序。

有誰知道,如果目前我所問的是可能的Torquebox或特立尼達?

回答

0

你仍然會被JSP困住。

一種選擇是重新使用JRuby的罐子,但我懷疑這會增加多少。

我已經使用Java EE的Servlet JSP風格傳統的web應用程序和我 希望能夠使用Ruby作爲我的表現層邏輯,而不是 正在使用的JSP。

行不通的。 Ruby不用於演示。 Rails框架允許erb.html執行ruby,但是當頁面加載時會發生一次。其餘大部分是Rails Helpers/JQuery用於演示。

所以,讓我們假設你有這個工作。你將如何處理這些ruby變量?我認爲它會導致死路一條,因爲用JSP可以做的事情不多。

真正的問題是你有什麼做的Ruby是Java的\ JavaScript不能做?

爲了展示我建議你考慮的事情,這將有助於你的代碼標籤在JSP友好的方式。像IceFaces。根據你的建議,你只能使用表達式語言。

0

你肯定能做到這一點,但它需要在你的尾的一位運動來準備的東西。

,因爲你希望它是使用Ruby,而不是使用Java,你只需添加JRuby的complete.jar到您的CLASSPATH一個Ruby一個一個Java Web應用程序(假設你不需要任何寶石,你將有stdlib - ERB在那裏)。如果你需要寶石,你可以用Warbler打包一個gem.jar。

比在Java端,你需要編寫,將您MCV(Ruby的:))...例如連接集成層在控制器「渲染」時,您需要從Java執行一些Ruby代碼,一種選擇是使用http://jruby.org/apidocs/org/jruby/embed/ScriptingContainer.html,或者您可以(引導並)直接使用org.jruby.Ruby API。

比採取erb輸出,並將其轉換爲Java字符串/ io應該最終作爲您的響應身體......當然這是一個「概念」的答案會有一些(也許很多)沿途解決障礙。