Наконец понял, когда я заменил ActiveRecord на RDBI.Я получал следующую ошибку, когда мои работники пытались подключиться к базе данных оракула
java.sql.SQLRecoverableException: I/O Exception: Connection reset
at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:281)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:118)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:224)
После поиска в Google я наткнулся на этот пост http://kr.forums.oracle.com/forums/thread.jspa?messageID=3793101.Итак, я решил передать опцию -Djava.security.egd = file: /// dev / urandom в мой jvm.Я отредактировал настройки в параметрах jvm Glassfish, но это не сработало, поскольку эти настройки принесли пользу моему приложению sinatra, но не работникам resque, работающим в фоновом режиме.
Итак, мне пришлось запустить работников resque, передав jvmаргумент.Я написал грабли, чтобы сделать то же самое.
desc "Start multiple workers for JRUBY production environment which ocnnects to oracle database"
task :start_workers => :setup do
threads = []
ENV['COUNT'].to_i.times do
threads << Thread.new do
system "/usr/bin/java -Djdk.home= -Djava.security.egd=file:///dev/urandom -Djruby.home=/usr/local/rvm/rubies/jruby-1.6.0 -Djruby.script=jruby -Djruby.shell=/bin/bash -Djffi.boot.library.path=/usr/local/rvm/rubies/jruby-1.6.0/lib/native/ppc-Linux:/usr/local/rvm/rubies/jruby-1.6.0/lib/native/i386-Linux:/usr/local/rvm/rubies/jruby-1.6.0/lib/native/x86_64-Linux -Xmx500m -Xss1024k -Djruby.memory.max=500m -Djruby.stack.max=1024k -Dsun.java.command=org.jruby.Main -Djava.class.path=/usr/local/rvm/rubies/jruby-1.6.0/lib/mysql-connector-java-5.0.6-bin.jar:/usr/local/rvm/rubies/jruby-1.6.0/lib/ojdbc6.jar:/usr/local/rvm/rubies/jruby-1.6.0/lib/sqlitejdbc-v056.jar: -Xbootclasspath/a:/usr/local/rvm/rubies/jruby-1.6.0/lib/jruby.jar org/jruby/Main /usr/local/rvm/gems/jruby-1.6.0/bin/rake resque:work RACK_ENV=#{ENV['RACK_ENV']} QUEUE=#{ENV['QUEUE']} INTERVAL=#{ENV['INTERVAL']}"
end
end
threads.each { |thread| thread.join }
end