阅读更多

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)基于协同的在线表格forture-sheet

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

  • 操作手册(GB8567——88)

    安装tomcat8及以上,并将jdk环境配置在tomcat的startup.sh中,同时修改settings.xml中port,将其改为18080,使得网站可以通过http默认端口访问。(2)将项目打包,格式war,部署在tomcat的webapps路径中,启动tomcat,待tomcat完成自动部署后,修改文件名为ROOT,即可直接通过域名在浏览器上访问该项目。修改配置文件,使得mysql可以通过外网访问,建立数据库,并导入fund.sql。2.《基金管理系统项目开发计划》 软件开发小组。

  • 软件设计文档国家标准_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. 

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

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

  • 酒店管理系统-数据库设计说明书

    <br />数据库设计说明书1引言1.1编写目的<br />本文档为**酒店管理系统需求分析报告,为**酒店管理系统的设计的主要依据,主要针对**酒店管理系统的概要设计和详细设计人员,作为项目验收的主要依据。1.2背景<br />本软件全称为**酒店管理系统。<br />软件适用于普通二星级酒店、宾馆。1.3参考资料<br />美萍酒店管理系统2结构设计<br />本软件的数据库名称为:**hotel,结构设计如下:<br />房间类型表  [roomtype]<br /><br />字段名<br />类型

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

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

  • 数据库设计说明书魔板

    数据库设计说明书 封面页 项目名称: [项目名称] 版本号: [版本号] 作者: [作者姓名] 日期: [日期] 目录 引言 需求分析 概念模型设计 逻辑模型设计 物理模型设计 数据库安全 数据库性能优化 数据迁移和集成 维护和监控 附录 1. 引言 项目背景: [项目的背景和目标] 数据库用途: [数据库的用途和范围] 设计原则和方法: [主要设计原则和方法] 2. 需求分析 功能需求: [功能需求1] [功能需求2] ... 非功能需求: [性能

  • 数据库设计说明书

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

  • 【设计文档】数据库设计说明书(Word实际项目案例参考)

    规格说明书,需求调研计划,用户需求调查单,用户需求说明书,概要设计说明书,技术解决方案,数据库设计说明书,详细设计说明书,单元测试报告,总体测试计划,单元测试计划,产品集成计划,集成测试报告,集成测试计划,系统测试报告,产品交接验收单,验收报告,验收测试报告,压力测试报告,项目总结报告,立项结项审批表,成本估算表,项目计划,项目周报月报,风险管理计划,质量保证措

  • CRM数据库设计说明书

    CRM系统设计详细说明书 字段设计,主外键关联,约束等都有详细说明

Global site tag (gtag.js) - Google Analytics