`
zengyinbo
  • 浏览: 21120 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

成功用JRuby创建war包,部署到Tomcat时加载rails报错

阅读更多
参考web页面:
http://edgibbs.com/2007/05/25/deploying-rails-to-tomcat-as-a-war-with-jruby/
http://www.infoq.com/cn/news/2007/08/deploying_rails_on_tomcat?
开发环境:Netbeans6.0 Beta 2,MySQL5.0,Tomcat6.0.13

1、设置好JRUBY_HOME和Path路径,将Mysql_connector.jar放到%JRUBY_HOME%\lib下和%Tomcat_HOME%\lib下(tomcat5系列是%Tomcat_HOME%\common\lib)
2、命令行:jruby gem install activerecord-jdbc --no-rdoc --no-ri,将看到类似文字

Installing ri documentation for ActiveRecord-JDBC-0.3.1...
Installing RDoc documentation for ActiveRecord-JDBC-0.3.1...
Successfully installed ActiveRecord-JDBC-0.3.1gem install ActiveRecord-JDBC

3、新建项目WarApp,并选上"Access Database using jdbc"和"Add rake targets to support APP Server Deployment(.war)"
(1)config\enviorment.rb文件里面加了下列代码,
if RUBY_PLATFORM =~ /java/
  require 'rubygems'
  gem 'ActiveRecord-JDBC'
  require 'jdbc_adapter'
 
end
(2)vendor\plugins目录下多了goldspike插件
4、新建数据库warapp,设置database.yml
development:
  adapter: jdbc

  driver: com.mysql.jdbc.Driver
  url: jdbc:mysql://localhost/warapp<your_production_database></your_production_database>
  username: root<user_name></user_name>
  password: zyb
5、生成模型Book和数据表books,生成scafford
(1)generate model Book
(2)修改 db\001_create_books.rb


def self.up<hostname></hostname>
我将WarApp.war放到%Tomcat_HOME%\webapps\下,运行Tomcat (startup.bat),http://localhost:8080/WarApp 可以看到
ruby on rails 的默认欢迎页面,但输入http://localhost:8080/WarApp/books/list 时报错了,加载rails错误。错误信息如下,
望高手补充。
javax.servlet.ServletException: Could not load Rails. See the logs for more details.
	org.jruby.webapp.RailsFactory.makeObject(RailsFactory.java:131)
	org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:840)
	org.jruby.webapp.AbstractRailsServlet.serviceRequest(AbstractRailsServlet.java:144)
	org.jruby.webapp.AbstractRailsServlet.service(AbstractRailsServlet.java:131)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	org.jruby.webapp.FileServlet.doGet(FileServlet.java:102)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
  •     create_table :books do |table|
  •       table.column :title, :string
  •       table.column :author, :string
  •     end
  •   end
    (3)在项目名WarApp右键“migrate database=>to current version”
    (4)generate scafford Book
    运行项目,http://localhost:3000/books/ 将看到我们熟悉的页面
    6、在项目名上右键“run rake task=>war:standalone:create”相当于命令“rake war:standalone:create”生成.war(使用rake war:standalone:create会增加所有需要的gems,而使用rake war:shared:create会需要调用不会加载rails相关的gems),控制台输出下来描述表示成功,第一次可能需要好几分钟,以后就快了。中间也可能失败,多试几次。
    Assembling web application
    Adding Java library commons-pool-1.3
    Adding Java library activation-1.1
    Adding Java library jruby-complete-0.9.9
    Adding Java library bcprov-jdk14-124
    Adding Java library rails-integration-1.1.1
    Adding web application
    Adding Ruby gem rails version 1.2.3
    Adding Ruby gem rake version 0.7.3
    Adding Ruby gem activesupport version 1.4.2
    Adding Ruby gem activerecord version 1.15.3
    Adding Ruby gem actionpack version 1.13.3
    Adding Ruby gem actionmailer version 1.3.3
    Adding Ruby gem actionwebservice version 1.2.3
    Adding Ruby gem ActiveRecord-JDBC version 0.3.1
    Creating web archive
    到此项目下产生了war文件WarApp.war

    将war放到%TOMCAT_HOME%\webapps下,运行Tomcat
    http://localhost:8080/WarApp/ 可以看到ruby on rails的欢迎页面,不过http://localhost:8080/WarApp/books/list 时报错,加载不到rails。错误信息如下,望:
    javax.servlet.ServletException: Could not load Rails. See the logs for more details.
     org.jruby.webapp.RailsFactory.makeObject(RailsFactory.java:131)
     org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:840)
     org.jruby.webapp.AbstractRailsServlet.serviceRequest(AbstractRailsServlet.java:144)
     org.jruby.webapp.AbstractRailsServlet.service(AbstractRailsServlet.java:131)
     javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
     org.jruby.webapp.FileServlet.doGet(FileServlet.java:102)
     javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
     javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

  • 分享到:
    评论
    2 楼 nickle_shen 2008-01-18  
    这个问题有没有解决阿?我这里也是一样的错误,请指点
    1 楼 zengyinbo 2007-11-25  
    将war放到%TOMCAT_HOME%\webapps下,运行Tomcat
    http://localhost:8080/WarApp/ 可以看到ruby on rails的欢迎页面,不过http://localhost:8080/WarApp/books/list 时报错,加载不到rails。错误信息如下,望:
    javax.servlet.ServletException: Could not load Rails. See the logs for more details.
    org.jruby.webapp.RailsFactory.makeObject(RailsFactory.java:131)
    org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:840)
    org.jruby.webapp.AbstractRailsServlet.serviceRequest(AbstractRailsServlet.java:144)
    org.jruby.webapp.AbstractRailsServlet.service(AbstractRailsServlet.java:131)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.jruby.webapp.FileServlet.doGet(FileServlet.java:102)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


    顺便说一句:javaeye的文章字数受限可否设置大一点哈。

    相关推荐

      jruby_on_rails

      3. **部署灵活性**:JRuby on Rails 应用可以轻松地部署到任何支持 Java 的服务器上,如 Tomcat、Jetty 或者是大型企业级应用服务器,如 WebLogic 和 WebSphere。 4. **热部署**:JVM 的热部署特性允许开发者在不...

      终于知道怎么把rails Web程序打包成可执行文件了

      在Ruby on Rails开发的世界里,将Web应用程序打包成可执行文件是一个常见的需求,尤其是在需要部署到没有Ruby环境的服务器或者希望提供用户一个独立运行的软件时。标题中的“终于知道怎么把rails Web程序打包成可...

      org.jruby.rar

      1. WAR 包:JRuby 应用可以被打包成 WAR 文件,部署在任何支持 Java Web 应用服务器上,如 Tomcat、Jetty 等。 2. Gradle 或 Maven 集成:开发过程中,JRuby 可以通过 Gradle 或 Maven 作为依赖管理工具进行集成。 ...

      redmjne:JRuby Redmine部署(Tomcat)WAR,可通过插件和主题进行最少的自定义,包括带有和不带有SSL的HAProxy和Apache Tomcat配置

      JRuby Redmine部署完全独立,可以通过JEE Apache-Tomcat WAR中的插件和主题进行自定义和不自定义。 Redmjne发行版有望与所有必要的运行时元素的最新稳定发行版保持同步;最新版本为2。 自2015年3月起,请参阅部门...

      rubygem-jruby-warck

      jruby-warck可以使用任何基于Rack的应用程序构建一个.war文件,您可以运行 用“ java -jar”或 在Servlet容器(例如Tomcat,JBoss,Jetty等)中。 是的,就像鸣鸟一样,但要简单得多。 用法 依存关系 jruby机架 ...

      warbler:Warbler巧妙地构建Ruby应用程序的.war文件

      Warbler是一种用任何Ruby,Rails或Rack应用程序制作Java jar或war文件的宝石。 Warbler提供了一种最小,灵活,类似于Ruby的方式来捆绑所有应用程序文件,以将其部署到Java环境中。 Warbler提供了一组开箱即用的...

      Panorama:监视Oracle数据库性能问题的工具

      可以作为Web应用程序部署到每个JEE或Web容器(Glassfish,JBoss,Tomcat ...) 也可以作为Docker映像使用而无需任何外部依赖 这个GitHub项目旨在使用集成的JETTY应用程序服务器构建捆绑的Web存档文件。该功能通过上...

      4. **部署**: 生成的WAR文件可以直接部署到任何支持Java Web应用程序的服务器,如Tomcat、Jetty等,使得Ruby应用能在Java环境中运行。 5. **依赖管理**: Warbler会自动处理Gemfile中的所有依赖,确保所有必要的库和...

    Global site tag (gtag.js) - Google Analytics