程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2EE >> Rails和java EE的整合——在 GlassFish v3中

Rails和java EE的整合——在 GlassFish v3中

編輯:J2EE

Rails和Java EE的整合
      下文將介紹一下在GlassFish v3上的Rails和java EE的整合。GlassFish v3是GlassFish V2的下一個版本,其關注的重點是模塊化和使得運行非Java EE的容器和模塊成為可能。
      下面是詳細的細節說明:
      1. 使用JRuby 1.1(安裝Rails),按照如下步驟創建一個Rails應用“railsee3”:
       ~/testbed/jruby-1.1/samples/rails >../../bin/jruby -S rails railsee3
       create
       create app/controllers
       create app/helpers
       create app/models
       . . .
       create log/production.log
       create log/development.log
       create log/test.log
       2. 添加Servlet描述 (Servlet descriptors)
           1.創建一個新文件夾"WEB-INF",在該文件夾下創建一個新文件"web.XML"
            <!DOCTYPE web-app PUBLIC
               "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
               "http://Java.sun.com/dtd/web-app_2_3.dtd">
            <web-app>
               <servlet>
                <servlet-name>HelloServlet</servlet-name>
                <servlet-class>server.HelloServlet</servlet-class>
                </servlet>
               <servlet-mapping>
               <servlet-name>HelloServlet</servlet-name>
               <url-pattern>/hello</url-pattern>
               </servlet-mapping>
               </web-app>
            2. 在文件夾"WEB-INF"中創建一個新文件"sun-web.XML":

             <?XML version="1.0" encoding="UTF-8"?>

              <!DOCTYPE sun-web-app PUBLIC

               "-//Sun Microsystems, Inc.//DTD Application Server  9.0   Servlet 2.5//EN" 

                "http://www.sun.com/software
                  / aPPServer/dtds/sun-web-app_2_5-0.dtd">
              <sun-web-app error-url="">
              <context-root>/servlet</context-root>
                <class-loader delegate="true"/>

               </sun-web-app>

              3. 創建一個新的文件夾"WEB-INF/lib"。


        3. 創建、復制servlet
              1. 創建一個Java library (參見該超鏈接的內容)
              2.從NetBeans project的文件夾"dist"中復制"HelloServlet.jar"到"WEB-INF/lib"文件夾中。

        4. 在GlassFish中配置JRuby-on-Rails,如下編輯"config/asenv.conf" 和配置JRUBY_HOME:

         JRUBY_HOME="/Users/arungup

         5 .如下部署Rails應用:
          ~/testbed/jruby-1.1/samples/rails >~/testbed/glassfish/v3/p2b9/glassfish/bin/asadmin deploy --force=true railsee3
         railsee3 deployed successfully
         Command deploy executed successfully.

         6. 現在就可以在如下地址"http://localhost:8080/servlet/hello"訪問剛才部署的servlet了,默認的浏覽器外觀看起來如下:

      通過URL傳遞一個參數,浏覽器會展示如下:

       就這樣,你的Java EE Servlet和Rails 應用綁定在一起部署在GlassFish v3上了。現在我們可以添加一些Controller和vIEw到Rails應用上來展示一個完整的Java EE和Rails的整合。

      7.創建一個新的Controller和vIEw
      ~/testbed/jruby-1.1/samples/rails/railsee3 >../../../bin/jruby script/generate controller home index
      JRuby limited openssl loaded. gem install jruby-openssl for full support.
      http://wiki.jruby.org/wiki/JRuby_Builtin_OpenSSL
            exists  app/controllers/
            exists  app/helpers/
            create  app/vIEws/home
            exists  test/functional/
            create  app/controllers/home_controller.rb
            create  test/functional/home_controller_test.rb
            create  app/helpers/home_helper.rb
            create  app/vIEws/home/index.Html.erb
   
    8.在"app/controllers/home_controller.rb" 中改變生成的控制器(controller):
      class HomeController < ApplicationController

      include Java

        def index
              url = Java.Net.URL.new("http://localhost:8080/servlet/hello");
              conn = url.open_connection;
              reader = java.io.BufferedReader.new(Java.io.InputStreamReader.new(conn.get_input_stream));
              @servlet_output = "";
              input_line = reader.read_line;
              while input_line != nil
                      @servlet_output << input_line;
                      input_line = reader.read_line;
              end
              reader.close;
        end
      end

      9.在"app/vIEws/home/index.rHtml.erb" 中改變生成的試圖(vIEw)
      <h1>Home#index</h1>
      <p>Find me in app/vIEws/home/index.Html.erb</p>

      <%= @servlet_output %>

10. 重新部署Rails 應用後會在以下地址"http://localhost:8080/railsee3/home/index"看到如下圖所示畫面:

所以,在GlassFish v3完全不需要任何類似於Warbler的Gems或者類似於Goldspike的插件(plugin)就可以部署Rails應用。

參考:
http://blogs.sun.com/arungupta/entry/rails_and_Java_ee_integration2

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved