阅读更多

8顶
2踩

编程语言

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

8
2
评论 共 5 条 请登录后发表评论
5 楼 liliang_xf 2009-03-31 15:14
GRAILS开发一年多,还可以!!
4 楼 xiaomogui 2008-11-03 15:07
欢呼下!
3 楼 cuiyi.crazy 2008-04-20 11:11
既然grails比较强悍 为什么sun不支持它 而是选择jruby呢
2 楼 sinoyster 2008-04-18 15:01
最近研究了一下grails,还是很强大,不知道谁实际用过
1 楼 小白·菜 2008-04-18 13:28
还是比较相信grails。

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 数据库设计说明书(GB8567——88)-GB8567.docx

    数据库设计说明书(GB8567——88)-GB8567.docx

  • 测试计划(GB8567——88)

    集成测试是单元测试的逻辑扩展,其基本思想是将已经通过单元测试的组件(单元)组合成一个整体,然后测试它们之间的接口和协作。在测试活动中,需求测试首先要明确测试的需求,即要测试什么。黑盒测试的覆盖是指对需求的覆盖,覆盖到每个功能点,通过参考软件设计说明书,编写的测试用例,有效的覆盖了所有的功能点,属于完全覆盖。确定测试目标: 明确接口测试的目标是验证系统组件之间的接口,包括外部系统与系统之间以及内部各个子系统之间的交互点。而需求测试则关注测试活动本身的需求,以制定合适的计划和策略,确保测试的全面性和有效性。

  • 数据库设计说明书(GB8567——88)基于协同的在线表格forture-sheet

    一个 MongoDB 实例可承载多个数据库,互相之间彼此独立,在开发过程中,通常将一个应用的所有数据存储到同一个数据库中,MongoDB 将不同数据库存放在不同文件中。面向集合存储,易于存储对象类型的数据,模式自由,支持动态查询,支持完全索引,支持复制和故障恢复,使用高效的二进制数据存储,文件存储格式为 BSON ( 一种 JSON 的扩展)等,并且支持分布式。通过区分不同的访问者、不同的访问类型和不同的数据对象,进行分别对待而获得的数据库安全保密设计考虑。数据库的名称:forture-sheet。

  • 软件设计文档国家标准_GB8567--88

    1引言... 21.1编写目的... 21.2背景... 21.3定义... 21.4参考资料... 22任务概述... 22.1目标... 22.2用户的特点... 32.3假定和约束... 33需求规定... 33.1对功能的规定... 33.2对性能的规定... 33.2.1精度... 33.2.2时间特性要求... 33.2.3灵活性... 43.3输人输出要求... 43.4数据管理能力

  • 数据库设计说明书(GB8567——88) (转)

    数据库设计说明书(GB8567——88) (转)[@more@] 数据库设计说明书(GB8567——88)XML:namespace prefix = o ns = "urn:schemas-microsoft-com:O...

  • 机房收费系统-数据库设计说明书

    数据库设计说明书 1引言     1.1编写目的 指出机房收费系统的数据库设计说明,对数据库中使用的所有标识、逻辑结构和物理结构做出具体的设计规定。 预期读者:程序员,数据库管理员。 1.2背景 说明: a. 数据库的名称:Charge_sys b. 软件系统的名称:机房收费系统 c. 任务提出者:米新江教授  d. 开发者:信息技术提高班-

  • ISO软件工程模板(7)数据库设计说明书

     1.引言1.1编写目的  [说明编写这份数据设计说明书的目的,指出预期的读者。]1.2背景  a.[待开发数据库的名称和使用此数据库的软件系统的名称;]  b.[列出本项目的任务提出者、开发者、用户。]1.3定义  [列出本文件中用到的专门术语的定义和外文首字母组词的原词组。]1.4参考资料  [列出有关的参考资料。]2.外部设计2.1标识符的状态

  • 数据库原理-数据库设计

    数据库设计:数据库设计步骤 概念设计工具-ER图,UML图 逻辑设计工具-范式-1NF,2NF,3NF,BCNF 数据库设计和ER模型 数据库设计(Database Design,简记为DBD):构造最优的数据模型,建立数据库及其应用系统的过程。 目前数据库已用于各类应用系统,MIS、DSS、0AS等。 数据库设计的优劣将直接影响应用系统的质量和运行效果。 数据库设计和ER模型 1数据库设计的全过程 2ER模型...

  • MySQL数据库

    MySQL数据库 (一) 建表规约 1.【强制】表达是与否概念的字段,必须使用 【强制】表达是与否概念的字段,必须使用 【强制】表达是与否概念的字段,必须使用 is_xxx的方式命名,数据类型是 的方式命名,数据类型是 的方式命名,数据类型是 unsigned tinyint(1表示是, 0表示否)。 表示否)。 说明: 任何字段如果为非负数,必须是 unsigned。注意: POJO类中的任...

  • 数据库设计规范详解

    本文详细阐述了数据库的设计规范,包含常用的数据库设计三范式和更高级的反范式化、巴斯范式、第四范式和第五范式。

  • 数据库讲解---(数据库设计)

    、“

  • 数据库设计说明书(Word模板)

    7.1 防止用户直接操作数据库。10 数据库的备份策略及方式。6.3 表、索引分区设计。7.2 用户帐号加密处理。8 数据库管理与维护说明。7.3 角色与权限控制。3 数据库的命名规则。6.2 数据文件设计。

  • MySQL设计说明书_数据库详细设计说明书-模板.doc

    数据库详细设计说明书-模板{项目名称}文件状态□ 征求意见稿( 正式发布编 号当前版本拟 制 人审 核 人批 准 人完成日期版 本 历 史版本作 者参与者起止时间备 注目录一、 BSCISPDB 数据库11. CMS采集表(JC_ACQUISITION)12. 采集历史记录表(JC_ACQUISITION_HISTORY)23. 采集进度临时表(JC_ACQUISITION_TEMP)24....

  • mysql数据库设计

    char、varchar和text的设计 最近有表结构设计中出现了varchar(10000)的设计引起了大家的讨论,我们下面就来分析分析。 char、varchar和text基础知识 char(n)和varchar(n)中括号中n代表字符的个数,并不代表字节个数,所以当使用了中文的时候(UTF8)意味着可以插入m个中文,但是实际会占用m*3个字节。 同时char和varchar最大的区别就在于char不管实际value都会占用n个字符的空间,而varchar只会占用实际字符应该占用的空间+1,并且

  • 【软件工程】-数据库设计说明书

    数据库设计说明书 1引言 1.1编写目的 数据库设计说明书 1引言 1.1编写目的 数据库的设计是为了以后编码、测试以及维护阶段的后台数据的存储做准备。应用于系统开发前期,为后期数据库设计指引方向。 预期的读者: 数据库设计师,数据库管理员 1.2背景 说明: 开发项目的名称:机房收费系统 数据库的名称:charge 数据库系统:SQL Server 2008 项目提出者:米新江教授 开发者:崔鹏...

  • XX项目数据库详细设计说明书.xlsx

    表名 表名称 说明 所属账户 主库/子库 主库/子库 备注 字段名 类型 自增 非负 非空 二进制保存 主键 唯一键 默认值 说明 关联表 "首次启用的 数据库版本" 备注

  • 数据库设计说明书

    数据库设计说明书 1引言 1.1编写目的      数据库的设计是为了以后编码、测试以及维护阶段的后台数据的存储做准备。应用于系统开发前期,为后期数据库设计指引方向。      预期的读者:系统开发人员、系统测试人员和系统维护人员 1.2背景     开发项目的名称:机房收费系统     数据库的名称:charge     数据库系统:SQL SERVER 2008

Global site tag (gtag.js) - Google Analytics