温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么在tomcat上配置jruby on rails

发布时间:2021-08-05 09:32:52 来源:亿速云 阅读:135 作者:chen 栏目:编程语言

本篇内容主要讲解“怎么在tomcat上配置jruby on rails”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么在tomcat上配置jruby on rails”吧!

本文介绍了jruby on rails在tomcat的配置实践。由于要在tomcat上部署3个rails项目,暂时使用的版本是rails1.2.3,jdk6 ,jruby1.1.2,tomcat5.5.12

用了一台非常烂的测试机器(p4 2.8  1g),当然,真实服务器比这个要好多了

1.使用rails开发应用之后,使用goldspike打包,不过我老是不成功,所以基本都手动添加,需要的东西主要是

Web-inf下面的lib:

Java代码

jruby-complete-1.1.2.jar     mysql-connector-java-5.1.6-bin.jar     goldspike-1.6.jar     commons-pool-1.3.jar     activation-1.1.jar

web-inf下面的gems,从你的ruby gems那里copy过来就可以了

主要有rails,另外由于使用mysql,所以有

Java代码

activerecord-jdbc-adapter-0.8    activerecord-jdbcmysql-adapter-0.8    jdbc-mysql-5.0.4    jruby-openssl-0.2.3 //可选

2.修改environment.rb,不过貌似rails2是不需要配置这个的

Ruby代码

if defined?(JRUBY_VERSION)       require 'rubygems'      gem 'activerecord-jdbc-adapter'      require 'jdbc_adapter'    end

还有database.yml,使用jndi

Ruby代码 <P

production:    adapter: jdbc    jndi: java:comp/env/jdbc/gdpolice 最后是production.rbRuby代码 config.cache_classes = true    config.action_controller.consider_all_requests_local = false    config.action_controller.perform_caching             = true    config.action_view.cache_template_loading            = true    config.breakpoint_server = false   3.配置web.xmlXml代码 <?xml version="1.0" encoding="UTF-8"?>    <web-app xmlns="http://java.sun.com/xml/ns/j2ee"      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"      xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"      version="2.4">        <context-param>            <param-name>jruby.standalone</param-name>            <param-value>true</param-value>        </context-param>        <context-param>            <param-name>rails.env</param-name>            <param-value>production</param-value>        </context-param>        <context-param>            <param-name>files.default</param-name>            <param-value>rails</param-value>        </context-param>                 <!-- 设置jruby线程池参数 -->        <context-param>            <param-name>jruby.pool.maxActive</param-name>            <param-value>10</param-value>        </context-param>        <context-param>            <param-name>jruby.pool.maxWait</param-name>            <param-value>50000</param-value>        </context-param>                 <!-- 其他优化设置:objectspace和jit参数,设置session为db方式 -->        <context-param>            <param-name>jruby.objectspace.enabled</param-name>            <param-value>false</param-value>        </context-param>        <context-param>            <param-name>jruby.jit.threshold</param-name>            <param-value>0</param-value>        </context-param>        <context-param>            <param-name>jruby.session_store</param-name>            <param-value>db</param-value>        </context-param>                 <servlet>            <servlet-name>rails</servlet-name>            <servlet-class>org.jruby.webapp.RailsServlet</servlet-class>        </servlet>        <servlet>            <servlet-name>files</servlet-name>            <servlet-class>org.jruby.webapp.FileServlet</servlet-class>        </servlet>        <listener>            <listener-class>org.jruby.webapp.RailsContextListener</listener-class>        </listener>            <!-- Allow all requests to go to the files servlet first -->        <servlet-mapping>            <servlet-name>files</servlet-name>            <url-pattern>/</url-pattern>        </servlet-mapping>                     <resource-ref>            <res-ref-name>jdbc/gdpolice</res-ref-name>            <res-type>javax.sql.DataSource</res-type>            <res-auth>Container</res-auth>        </resource-ref>    </web-app>     <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee"   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"   version="2.4">     <context-param>         <param-name>jruby.standalone</param-name>         <param-value>true</param-value>     </context-param>     <context-param>         <param-name>rails.env</param-name>         <param-value>production</param-value>     </context-param>     <context-param>         <param-name>files.default</param-name>         <param-value>rails</param-value>     </context-param>           <!-- 设置jruby线程池参数 -->     <context-param>         <param-name>jruby.pool.maxActive</param-name>         <param-value>10</param-value>     </context-param>     <context-param>         <param-name>jruby.pool.maxWait</param-name>         <param-value>50000</param-value>     </context-param>           <!-- 其他优化设置:objectspace和jit参数,设置session为db方式 -->     <context-param>         <param-name>jruby.objectspace.enabled</param-name>         <param-value>false</param-value>     </context-param>     <context-param>         <param-name>jruby.jit.threshold</param-name>         <param-value>0</param-value>     </context-param>     <context-param>         <param-name>jruby.session_store</param-name>         <param-value>db</param-value>     </context-param>           <servlet>         <servlet-name>rails</servlet-name>         <servlet-class>org.jruby.webapp.RailsServlet</servlet-class>     </servlet>     <servlet>         <servlet-name>files</servlet-name>         <servlet-class>org.jruby.webapp.FileServlet</servlet-class>     </servlet>     <listener>         <listener-class>org.jruby.webapp.RailsContextListener</listener-class>     </listener>      <!-- Allow all requests to go to the files servlet first -->     <servlet-mapping>         <servlet-name>files</servlet-name>         <url-pattern>/</url-pattern>     </servlet-mapping>         <resource-ref>         <res-ref-name>jdbc/gdpolice</res-ref-name>         <res-type>javax.sql.DataSource</res-type>         <res-auth>Container</res-auth>     </resource-ref> </web-app> 注明几点:jruby.standalone为false的时候,需要定义jruby.homerails.env就对应rails的那几种环境jruby线程池有几个参数(需要根据情况来配置),如下:Java代码 jruby.pool.maxActive #最大运行时数量,默认4  jruby.pool.minIdle #最小运行时数量 默认2  jruby.pool.initialSize #运行时初始数量 默认jruby.pool.minIdle 的值  jruby.pool.checkInterval #检查是否需要更多运行时之间的毫秒数 默认1000  jruby.pool.maxWait #最长等待时间 默认3000 jruby.objectspace.enabled貌似默认就是falsejruby.jit.threshold设置使用jit编译的方法数量的阀值,为0表示全部使用jitjruby.session_store为db表示使用rails的db方式保存sessionresource-ref只是针对5..5或以下,6.0不需要这个鬼东西4.配置tomcatserver.xml(其实跟普通的web应用没什么区别,就是配置数据源什么什么的,不说了)另外有需要注意的是:Jruby占用的内存,cpu相当惊人,所以要做好准备,需要配置好tomcat的内存参数(具体还是要配合机器)Java代码 #catalina.sh     JAVA_OPTS="$JAVA_OPTS -server -Xms512m -Xmx512m -XX:MaxNewSize=256m -XX:PermSize=128m -XX:MaxPermSize=256m"    #catalina.bat     set JAVA_OPTS=%JAVA_OPTS% -server -Xms512m -Xmx512m -XX:MaxNewSize=256m -XX:PermSize=128m -XX:MaxPermSize=128m     #catalina.sh  JAVA_OPTS="$JAVA_OPTS -server -Xms512m -Xmx512m -XX:MaxNewSize=256m -XX:PermSize=128m -XX:MaxPermSize=256m" #catalina.bat  set JAVA_OPTS=%JAVA_OPTS% -server -Xms512m -Xmx512m -XX:MaxNewSize=256m -XX:PermSize=128m -XX:MaxPermSize=128m   另外,tomcat服务器优化的就不说了,例如加httpd,调节参数,apr,nio之类。。。5.其他观察结果:由于部署多个rails,用jconsole监测,内存消耗很大,特别是permsize的消耗,一直维持在85m上下,所以导致真实服务器也出项outofmemory。经过测试,把上个项目的lib提取到tomcat的lib去(只保留一份),permsize仅仅维持在50m那样子。另外要尽量使用jruby的新版本,1.1比1.0的性能提升相当大(感觉非常明显)。后来还启用了jruby的server模式,感觉就是tomcat的启动速度慢许多了。。至于性能提升,暂时还没察觉。。jruby有jit和aot两种编译模式,aot只是试过一下,还没跟jit进行过测试对比,暂时不清楚。6.以上就是jruby on rails在tomcat的配置实践。jruby on rails的部署方式还是挺不错的。现在很期待jruby。

到此,相信大家对“怎么在tomcat上配置jruby on rails”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI