Thank you your suggestion, Itried glassfish gem deployment, it works as well as webrick.
However, the performance problem of jruby + glassfish v3 seems still there. As you mentioned, this may be not caused by glassfishv3. Finally, I find this problem may lie in ActionRecord between WEBrick and glassfishv3.
I did the following test: Application environment: Server:WEBrick1.3.1 Database:Oracle 11g Ruby version 1.8.7 (java) RubyGems version 1.3.5 Rack version 1.0 Rails version 2.3.4 Active Record version 2.3.4 Active Resource version 2.3.4 Action Mailer version 2.3.4 Active Support version 2.3.4 Application root C:/Documents and Settings/Administrator/My Documents/NetBeansProjects/RailsApplication1 Environment development Database adapter oracle_enhanced Database schema version 20100110051408 View: "<h1>TestSession#index</h1> <p>Find me in app/views/test_session/index.html.erb</p>" Controller: class TestSessionController < ApplicationController def index puts Time.now.strftime("%Y/%m/%d %H:%M:%S.#{Time.now.usec} %z") @blog=Blog.new puts Time.now.strftime("%Y/%m/%d %H:%M:%S.#{Time.now.usec} %z") end end Model: class Blog < ActiveRecord::Base end After run the application on WEBrick and access the controller
http://localhost:3000/test_session the console outputs the following information: 2010/01/12 14:52:50.531000 +0800 2010/01/12 14:52:50.953000 +0800 Now I change the server to glassfish v3, and access the controller with
http://localhost/RailsApplication1/test_session I get the following information: 信息: Processing TestSessionController#index (for 127.0.0.1 at 2010-01-12 15:00:31) [GET] 信息: 2010/01/12 15:00:31.859000 +0800 信息: 信息: SQL (16.0ms) SELECT trigger_name FROM all_triggers WHERE owner = 'RUBY' AND trigger_name = 'BLOGS_PKT' AND table_owner = 'RUBY' AND table_name = 'BLOGS' AND status = 'ENABLED' 信息: Blog Columns (0.0ms) select column_name as name, data_type as sql_type, data_default, nullable, decode(data_type, 'NUMBER', data_precision, 'FLOAT', data_precision, 'VARCHAR2', decode(char_used, 'C', char_length, data_length), 'CHAR', decode(char_used, 'C', char_length, data_length), null) as limit, decode(data_type, 'NUMBER', data_scale, null) as scale from all_tab_columns where owner = 'RUBY' and table_name = 'BLOGS' order by column_id 信息: 2010/01/12 15:00:33.859000 +0800 信息: 信息: Rendering test_session/index 信息: Completed in 3000ms (View: 1000, DB: 16) | 200 OK [
http://localhost/RailsApplication1/test_session] The execute time of glassfish is much longer than Webrick, I am really curious why there is such a big difference in executing only a simple line of code?
[Message sent by forum member 'hitwzh' (hitwzh_at_gmail.com)]
http://forums.java.net/jive/thread.jspa?messageID=380237