自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何在tomcat上配置jruby on rails

開發(fā) 后端
本文詳細講解了如何在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開發(fā)應用之后,使用goldspike打包,不過我老是不成功,所以基本都手動添加,需要的東西主要是

Web-inf下面的lib:

Java代碼

  1. jruby-complete-1.1.2.jar     
  2. mysql-connector-java-5.1.6-bin.jar     
  3. goldspike-1.6.jar     
  4. commons-pool-1.3.jar     
  5. activation-1.1.jar   

web-inf下面的gems,從你的ruby gems那里copy過來就可以了

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

Java代碼

  1. activerecord-jdbc-adapter-0.8    
  2. activerecord-jdbcmysql-adapter-0.8    
  3. jdbc-mysql-5.0.4    
  4. jruby-openssl-0.2.3 //可選   

2.修改environment.rb,不過貌似rails2是不需要配置這個的

Ruby代碼

  1. if defined?(JRUBY_VERSION)     
  2.   require 'rubygems'    
  3.   gem 'activerecord-jdbc-adapter'    
  4.   require 'jdbc_adapter'    
  5. end   

還有database.yml,使用jndi

Ruby代碼

  1. production:  
  2.   adapter: jdbc  
  3.   jndi: java:comp/env/jdbc/gdpolice 

最后是production.rb

Ruby代碼

  1. config.cache_classes = true    
  2. config.action_controller.consider_all_requests_local = false    
  3. config.action_controller.perform_caching             = true    
  4. config.action_view.cache_template_loading            = true    
  5. config.breakpoint_server = false   

3.配置web.xml

Xml代碼

  1. <?xml version="1.0" encoding="UTF-8"?>    
  2. <web-app xmlns="http://java.sun.com/xml/ns/j2ee"    
  3.   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
  4.   xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"    
  5.   version="2.4">    
  6.     <context-param>    
  7.         <param-name>jruby.standalone</param-name>    
  8.         <param-value>true</param-value>    
  9.     </context-param>    
  10.     <context-param>    
  11.         <param-name>rails.env</param-name>    
  12.         <param-value>production</param-value>    
  13.     </context-param>    
  14.     <context-param>    
  15.         <param-name>files.default</param-name>    
  16.         <param-value>rails</param-value>    
  17.     </context-param>    
  18.          
  19.     <!-- 設置jruby線程池參數(shù) -->    
  20.     <context-param>    
  21.         <param-name>jruby.pool.maxActive</param-name>    
  22.         <param-value>10</param-value>    
  23.     </context-param>    
  24.     <context-param>    
  25.         <param-name>jruby.pool.maxWait</param-name>    
  26.         <param-value>50000</param-value>    
  27.     </context-param>    
  28.          
  29.     <!-- 其他優(yōu)化設置:objectspace和jit參數(shù),設置session為db方式 -->    
  30.     <context-param>    
  31.         <param-name>jruby.objectspace.enabled</param-name>    
  32.         <param-value>false</param-value>    
  33.     </context-param>    
  34.     <context-param>    
  35.         <param-name>jruby.jit.threshold</param-name>    
  36.         <param-value>0</param-value>    
  37.     </context-param>    
  38.     <context-param>    
  39.         <param-name>jruby.session_store</param-name>    
  40.         <param-value>db</param-value>    
  41.     </context-param>    
  42.          
  43.     <servlet>    
  44.         <servlet-name>rails</servlet-name>    
  45.         <servlet-class>org.jruby.webapp.RailsServlet</servlet-class>    
  46.     </servlet>    
  47.     <servlet>    
  48.         <servlet-name>files</servlet-name>    
  49.         <servlet-class>org.jruby.webapp.FileServlet</servlet-class>    
  50.     </servlet>    
  51.     <listener>    
  52.         <listener-class>org.jruby.webapp.RailsContextListener</listener-class>    
  53.     </listener>    
  54.     
  55.     <!-- Allow all requests to go to the files servlet first -->    
  56.     <servlet-mapping>    
  57.         <servlet-name>files</servlet-name>    
  58.         <url-pattern>/</url-pattern>    
  59.     </servlet-mapping>    
  60.              
  61.     <resource-ref>    
  62.         <res-ref-name>jdbc/gdpolice</res-ref-name>    
  63.         <res-type>javax.sql.DataSource</res-type>    
  64.         <res-auth>Container</res-auth>    
  65.     </resource-ref>    
  66. </web-app>    
  67.  
  68. <?xml version="1.0" encoding="UTF-8"?> 
  69. <web-app xmlns="http://java.sun.com/xml/ns/j2ee" 
  70.   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  71.   xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" 
  72.   version="2.4"> 
  73.     <context-param> 
  74.         <param-name>jruby.standalone</param-name> 
  75.         <param-value>true</param-value> 
  76.     </context-param> 
  77.     <context-param> 
  78.         <param-name>rails.env</param-name> 
  79.         <param-value>production</param-value> 
  80.     </context-param> 
  81.     <context-param> 
  82.         <param-name>files.default</param-name> 
  83.         <param-value>rails</param-value> 
  84.     </context-param> 
  85.       
  86.     <!-- 設置jruby線程池參數(shù) --> 
  87.     <context-param> 
  88.         <param-name>jruby.pool.maxActive</param-name> 
  89.         <param-value>10</param-value> 
  90.     </context-param> 
  91.     <context-param> 
  92.         <param-name>jruby.pool.maxWait</param-name> 
  93.         <param-value>50000</param-value> 
  94.     </context-param> 
  95.       
  96.     <!-- 其他優(yōu)化設置:objectspace和jit參數(shù),設置session為db方式 --> 
  97.     <context-param> 
  98.         <param-name>jruby.objectspace.enabled</param-name> 
  99.         <param-value>false</param-value> 
  100.     </context-param> 
  101.     <context-param> 
  102.         <param-name>jruby.jit.threshold</param-name> 
  103.         <param-value>0</param-value> 
  104.     </context-param> 
  105.     <context-param> 
  106.         <param-name>jruby.session_store</param-name> 
  107.         <param-value>db</param-value> 
  108.     </context-param> 
  109.       
  110.     <servlet> 
  111.         <servlet-name>rails</servlet-name> 
  112.         <servlet-class>org.jruby.webapp.RailsServlet</servlet-class> 
  113.     </servlet> 
  114.     <servlet> 
  115.         <servlet-name>files</servlet-name> 
  116.         <servlet-class>org.jruby.webapp.FileServlet</servlet-class> 
  117.     </servlet> 
  118.     <listener> 
  119.         <listener-class>org.jruby.webapp.RailsContextListener</listener-class> 
  120.     </listener> 
  121.  
  122.     <!-- Allow all requests to go to the files servlet first --> 
  123.     <servlet-mapping> 
  124.         <servlet-name>files</servlet-name> 
  125.         <url-pattern>/</url-pattern> 
  126.     </servlet-mapping> 
  127.     
  128.     <resource-ref> 
  129.         <res-ref-name>jdbc/gdpolice</res-ref-name> 
  130.         <res-type>javax.sql.DataSource</res-type> 
  131.         <res-auth>Container</res-auth> 
  132.     </resource-ref> 
  133. </web-app> 

注明幾點:

jruby.standalone為false的時候,需要定義jruby.home

rails.env就對應rails的那幾種環(huán)境

jruby線程池有幾個參數(shù)(需要根據(jù)情況來配置),如下:

Java代碼

  1. jruby.pool.maxActive #最大運行時數(shù)量,默認4  
  2. jruby.pool.minIdle #最小運行時數(shù)量 默認2  
  3. jruby.pool.initialSize #運行時初始數(shù)量 默認jruby.pool.minIdle 的值  
  4. jruby.pool.checkInterval #檢查是否需要更多運行時之間的毫秒數(shù) 默認1000  
  5. jruby.pool.maxWait #最長等待時間 默認3000 

jruby.objectspace.enabled貌似默認就是false

jruby.jit.threshold設置使用jit編譯的方法數(shù)量的閥值,為0表示全部使用jit

jruby.session_store為db表示使用rails的db方式保存session

resource-ref只是針對5..5或以下,6.0不需要這個鬼東西

4.配置tomcat

server.xml(其實跟普通的web應用沒什么區(qū)別,就是配置數(shù)據(jù)源什么什么的,不說了)

另外有需要注意的是:

Jruby占用的內存,cpu相當驚人,所以要做好準備,需要配置好tomcat的內存參數(shù)(具體還是要配合機器)

Java代碼

  1. #catalina.sh     
  2. JAVA_OPTS="$JAVA_OPTS -server -Xms512m -Xmx512m -XX:MaxNewSize=256m -XX:PermSize=128m -XX:MaxPermSize=256m"    
  3. #catalina.bat     
  4. set JAVA_OPTS=%JAVA_OPTS% -server -Xms512m -Xmx512m -XX:MaxNewSize=256m -XX:PermSize=128m -XX:MaxPermSize=128m    
  5.  
  6. #catalina.sh  
  7. JAVA_OPTS="$JAVA_OPTS -server -Xms512m -Xmx512m -XX:MaxNewSize=256m -XX:PermSize=128m -XX:MaxPermSize=256m" 
  8. #catalina.bat  
  9. set JAVA_OPTS=%JAVA_OPTS% -server -Xms512m -Xmx512m -XX:MaxNewSize=256m -XX:PermSize=128m -XX:MaxPermSize=128m   

另外,tomcat服務器優(yōu)化的就不說了,例如加httpd,調節(jié)參數(shù),apr,nio之類。。。

5.其他觀察結果:由于部署多個rails,用jconsole監(jiān)測,內存消耗很大,特別是permsize的消耗,一直維持在85m上下,所以導致真實服務器也出項outofmemory。經(jīng)過測試,把上個項目的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的部署方式還是挺不錯的?,F(xiàn)在很期待jruby。

【編輯推薦】

  1. Jython和JRuby,以及Groovy:Java平臺的統(tǒng)一認識模型
  2. JRuby 1.3.0 RC1發(fā)布 加強對GAE支持
  3. JRuby中調用java帶可變參數(shù)的方法
  4. 使用Java Web Start部署JRuby應用
  5. JRuby入門教程:從無到有建立第一個Hello World
責任編輯:佚名 來源: JavaEye社區(qū)
相關推薦

2009-07-17 17:34:15

JRuby On Ra

2014-06-30 09:27:17

UbuntuTomcat集群

2009-07-17 17:00:13

在JRuby下將RoR

2019-07-12 16:28:32

MacKubernetes

2015-11-24 14:14:00

CentOS 7.0Ceph配置

2013-03-06 13:27:03

HadoopLinux

2019-10-21 13:28:38

UbuntuPostgreSQL命令

2015-11-30 15:05:01

Linux瀏覽器Docker

2009-07-20 15:37:26

JRuby安裝JRuby配置

2016-01-06 14:00:20

Ubuntu 14Ubuntu 15Apache Solr

2020-03-18 14:40:14

Ubuntu 18.0RedisLinux

2022-12-27 08:51:31

WebDebian 11

2018-03-29 15:21:03

LinuxDebian網(wǎng)橋

2024-01-30 20:06:18

RHELVLAN

2009-12-14 15:37:35

Ruby on Rai

2015-08-04 13:29:06

Fedoralinux

2023-05-24 11:56:06

RHEL 9DHCP服務器

2021-11-05 08:00:00

數(shù)據(jù)庫PostgreSQL開源

2010-05-13 09:07:13

JRuby

2009-07-17 17:05:29

JRuby是什么JRuby
點贊
收藏

51CTO技術棧公眾號