阅读更多

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——88),测试计划(GB8567——88),概要设计说明书(GB8567——88),开发进度月报(GB8567——88),可行性研究报告(GB8567——88),模块开发卷宗(GB8567——88),软件需求说明书(GB856T——88),数据库设计说明书(GB8567——88),数据要求说明书(GB856T——88),文件给制实施规定的实例(GB8567-88),详细设计说明书(GB8567——88)...)

    国标软件设计文档(操作手册(GB8567——88),测试分析报告(GB8567——88),测试计划(GB8567——88),概要设计说明书(GB8567——88),开发进度月报(GB8567——88),可行性研究报告(GB8567——88),模块开发卷宗(GB8567——88),软件需求说明书(GB856T——88),数据库设计说明书(GB8567——88),数据要求说明书(GB856T——88),文件给制实施规定的实例(GB8567-88),详细设计说明书(GB8567——88),项目开发计划(GB856T——88),项目开发总结报告(GB8567——88),用户手册(GB8567——88))

  • 标准体制中的 GB8567——88

    前言:    在写机房收费系统文档时会注意到每个文档名称的后面都被加了一个(GB8567——88),笔者出于好奇查了一它所代表的含义,那么它到底是什么呢,它的存在又说明了什么问题呢?   正文:    原来啊,这是一种标准,在我国标准体制共分为四级:国家标准、行业标准、地方标准和企业标准。    一、国家标准:简称国标(Guóbiāo,GB,按汉语拼音发音),对需要在全国范围内统一

  • 数据库设计说明书(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. 软件设计的任务与目标 根据《软件需求规格说明书》提出的系统目标,设计出软件系 统的体系结构、接口、数据结构和处理流程,形成软件的具体实现方案,并撰写《软件设计说明书》。 软件设计是把许多事物和问题抽象起来,并且抽象它们不同的层次和角度。将问题或事物分解并模块化使得解决问题变得容易,分解的越细模块数量也就越多,它的副作用就是使得设计者考虑更多的模块之间耦合度的情况。 2. 软件体系结构的内涵与...

  • 软件开发标准(文档模板)

    操作手册(GB8567——88)1引言1.1编写目的说明编写这份操作手册的目的,指出预期的读者。1.2前景说明:a.  这份操作手册所描述的软件系统的名称;b.  该软件项目的任务提出者、开发者、用户(或首批用户)及安装该软件的计算中心。1.3定义列出本文件中用到的专门术语的定义和外文首字母组词的原词组。1.4参考资料列出有用的参考资料,如:a. 

  • 软件开发项目文档系列之八数据库设计说明书

    数据库设计说明书是一个关键文档,它提供了有关数据库的详细信息,包括设计、结构、运行环境、数据安全、管理和维护等方面的内容。

  • MySQL数据库

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

  • 数据库设计说明书

    (5)certificates 表通过 user_id 和 course_id 分别与 users 和 courses 表关联,表示证书颁发给学习特定课程的特定用户。(3)course_reviews 表通过 user_id 和 course_id 分别与 users 和 courses 表关联,表示评价由特定用户针对特定课程。本文档旨在详细描述用户表、课程表、课程评价表、错题记录表和证书表的数据库设计。(2)courses 表通过 teacher_id 与 users 表关联,表示教师与课程的关系。

  • 数据库规范设计说明书(参考阿里开发规范)

    1.建表规约 **【强制】**表达是与否概念的字段,必须使用is_xxx的方式命名,数据类型是tinyint(1) ( 1表示是,0表示否)。 说明:任何字段如果为非负数,必须是无符号。 正例:表达逻辑删除的字段名is_deleted,1 表示删除,0 表示未删除。 **【强制】**表名、字段名必须使用小写字母或数字,禁止出现数字开头,禁止两个下划线中间只出现数字。数据库字段名的修改代价很...

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

    数据库设计说明书 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标识符的状态

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

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

  • 数据库规范设计说明书

    *【强制】**表达是与否概念的字段,必须使用is_xxx的方式命名,数据类型是tinyint(1)( 1表示是,0表示否)。说明:任何字段如果为非负数,必须是无符号。正例:表达逻辑删除的字段名is_deleted,1 表示删除,0 表示未删除。**【强制】**表名、字段名必须使用小写字母或数字,禁止出现数字开头,禁止两个下划线中间只出现数字。数据库字段名的修改代价很大,因为无法进行预发布,所以字段名称需要慎重考虑。

  • 【资料集】数据库设计说明书(Word原件提供)

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

  • 一个良好的数据库设计说明书包括哪些

    一个良好的数据库设计说明书应该包括以下几个关键部分,每个部分都应详细描述数据库的各个方面,以确保数据库的设计和实现过程顺利进行:封面页目录引言需求分析概念模型设计逻辑模型设计物理模型设计数据库安全数据库性能优化数据迁移和集成维护和监控附录

Global site tag (gtag.js) - Google Analytics