jruby on rails在tomcat的配置实践
http://tech.ddvip.com 2008年09月03日 社区交流
本文详细介绍jruby on rails在tomcat的配置实践
由于要在tomcat上部署3个rails项目,暂时使用的版本是rails1.2.3,jruby1.1.2,tomcat5.5.12(都有点旧了)
用了一台非常烂的测试机器(p4 2.8 1g),当然,真实服务器比这个要好n多了。。
1.使用rails开发应用之后,使用goldspike打包,不过我老是不成功,所以基本都手动添加,需要的东西主要是
Web-inf下面的lib: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,所以有activerecord-jdbc-adapter-0.8
activerecord-jdbcmysql-adapter-0.8
jdbc-mysql-5.0.4
jruby-openssl-0.2.3 //可选
2.修改environment.rb,不过貌似rails2是不需要配置这个的if defined?(JRUBY_VERSION)
require 'rubygems'
gem 'activerecord-jdbc-adapter'
require 'jdbc_adapter'
end
Rails::Initializer.run do config
#.......
还有database.yml,使用jndiproduction:
adapter: jdbc
jndi: java:comp/env/jdbc/gdpolice
最后是production.rbconfig.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.xml
<?xmlversion="1.0"encoding="UTF-8"?>
<web-appxmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2eehttp://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>
<!--Allowallrequeststogotothefilesservletfirst-->
<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>
责编:豆豆技术应用