溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么在tomcat上配置jruby on rails

發(fā)布時(shí)間:2021-08-05 09:32:52 來源:億速云 閱讀:148 作者:chen 欄目:編程語言

本篇內(nèi)容主要講解“怎么在tomcat上配置jruby on rails”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“怎么在tomcat上配置jruby on rails”吧!

本文介紹了jruby on rails在tomcat的配置實(shí)踐。由于要在tomcat上部署3個(gè)rails項(xiàng)目,暫時(shí)使用的版本是rails1.2.3,jdk6 ,jruby1.1.2,tomcat5.5.12

用了一臺(tái)非常爛的測(cè)試機(jī)器(p4 2.8  1g),當(dāng)然,真實(shí)服務(wù)器比這個(gè)要好多了

1.使用rails開發(fā)應(yīng)用之后,使用goldspike打包,不過我老是不成功,所以基本都手動(dòng)添加,需要的東西主要是

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是不需要配置這個(gè)的

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>                 <!-- 設(shè)置jruby線程池參數(shù) -->        <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>                 <!-- 其他優(yōu)化設(shè)置:objectspace和jit參數(shù),設(shè)置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>           <!-- 設(shè)置jruby線程池參數(shù) -->     <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>           <!-- 其他優(yōu)化設(shè)置:objectspace和jit參數(shù),設(shè)置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> 注明幾點(diǎn):jruby.standalone為false的時(shí)候,需要定義jruby.homerails.env就對(duì)應(yīng)rails的那幾種環(huán)境jruby線程池有幾個(gè)參數(shù)(需要根據(jù)情況來配置),如下:Java代碼 jruby.pool.maxActive #最大運(yùn)行時(shí)數(shù)量,默認(rèn)4  jruby.pool.minIdle #最小運(yùn)行時(shí)數(shù)量 默認(rèn)2  jruby.pool.initialSize #運(yùn)行時(shí)初始數(shù)量 默認(rèn)jruby.pool.minIdle 的值  jruby.pool.checkInterval #檢查是否需要更多運(yùn)行時(shí)之間的毫秒數(shù) 默認(rèn)1000  jruby.pool.maxWait #最長(zhǎng)等待時(shí)間 默認(rèn)3000 jruby.objectspace.enabled貌似默認(rèn)就是falsejruby.jit.threshold設(shè)置使用jit編譯的方法數(shù)量的閥值,為0表示全部使用jitjruby.session_store為db表示使用rails的db方式保存sessionresource-ref只是針對(duì)5..5或以下,6.0不需要這個(gè)鬼東西4.配置tomcatserver.xml(其實(shí)跟普通的web應(yīng)用沒什么區(qū)別,就是配置數(shù)據(jù)源什么什么的,不說了)另外有需要注意的是:Jruby占用的內(nèi)存,cpu相當(dāng)驚人,所以要做好準(zhǔn)備,需要配置好tomcat的內(nèi)存參數(shù)(具體還是要配合機(jī)器)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服務(wù)器優(yōu)化的就不說了,例如加httpd,調(diào)節(jié)參數(shù),apr,nio之類。。。5.其他觀察結(jié)果:由于部署多個(gè)rails,用jconsole監(jiān)測(cè),內(nèi)存消耗很大,特別是permsize的消耗,一直維持在85m上下,所以導(dǎo)致真實(shí)服務(wù)器也出項(xiàng)outofmemory。經(jīng)過測(cè)試,把上個(gè)項(xiàng)目的lib提取到tomcat的lib去(只保留一份),permsize僅僅維持在50m那樣子。另外要盡量使用jruby的新版本,1.1比1.0的性能提升相當(dāng)大(感覺非常明顯)。后來還啟用了jruby的server模式,感覺就是tomcat的啟動(dòng)速度慢許多了。。至于性能提升,暫時(shí)還沒察覺。。jruby有jit和aot兩種編譯模式,aot只是試過一下,還沒跟jit進(jìn)行過測(cè)試對(duì)比,暫時(shí)不清楚。6.以上就是jruby on rails在tomcat的配置實(shí)踐。jruby on rails的部署方式還是挺不錯(cuò)的。現(xiàn)在很期待jruby。

到此,相信大家對(duì)“怎么在tomcat上配置jruby on rails”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI