JRuby on Rails не работает с Tomcat, работающим как служба в Windows Server 2008.

Проблема

Похоже, запуск Tomcat как службы плохо работает с приложениями Rails 3, упакованными с использованием warble. Глядя на файлы журнала, похоже, что существует либо циклическая зависимость, либо зависимость, которая динамически разрешается, но не может быть найдена, поэтому она зацикливается. В конце концов, выбрасывается org.jruby.exceptions.RaiseException: stack level too deep. Однако, когда я использую startup.bat для запуска Tomcat, эта проблема не возникает.

Любая помощь будет оценена по достоинству! Я отчаянно искал ответ на это. Заранее спасибо!

Платформа развертывания

  • Windows Server 2008 (64-разрядная версия)
  • Apache Tomcat 6.29 (64-разрядная версия)
  • JDK 1.6
  • Рельсы 3
  • джруби 1.5.6
  • славка (1.2.1)
  • jruby-jars (>= 1.4.0)
  • jruby-стойка (>= 1.0.0)

Tomcat localhost.log

http://pastie.org/1308566


person John    schedule 18.11.2010    source источник
comment
Можете ли вы попробовать обновить Bundler и повторить попытку?   -  person Nick Sieger    schedule 09.12.2010
comment
Я попробую завтра, как только доберусь до работы. Спасибо, Ник! Я очень ценю ответ от вас.   -  person John    schedule 10.12.2010
comment
Привет, Ник, я запускаю Bundler 1.0.7. Все еще вижу ту же проблему.   -  person John    schedule 15.12.2010


Ответы (3)


Я предполагаю, что ваша информация о подключении к базе данных содержит неожиданную нулевую строку, которую система пытается где-то преобразовать в верхний регистр. Смотрите это сообщение об ошибке как подсказку:

в ERB.result(C:/bin/apache-tomcat-6.0.29/webapps/rails3app/WEB-INF/gems/gems/railties-3.0.0/lib/rails/application/configuration.rb:86) в Rails ::Application::Configuration.database_configuration(C:/bin/apache-tomcat-6.0.29/webapps/rails3app/WEB-INF/gems/gems/activerecord-3.0.0/lib/active_record/railtie.rb:58)

Это можно исправить с помощью редактирования конфигурации.

person blueberryfields    schedule 14.12.2010
comment
Посмотрите на конфигурацию базы данных — если имеет смысл иметь пустые или отсутствующие данные для некоторых полей, попробуйте заменить их пустой строкой () или эквивалентом. - person blueberryfields; 14.12.2010
comment
Спасибо. Это решило новую проблему, но теперь я вернулся к исходной проблеме. :С - person John; 14.12.2010

Я только что опубликовал следующее в вашем билете Jruby [http://jira.codehaus.org/browse/JRUBY-5237]:

На самом деле это проблема версии procrun (Apache Commons Daemon), которая поставляется с Tomcat ‹= 6.0.29. Вам необходимо обновить либо всю установку Tomcat 6, либо версию procrun, которую вы используете. Procrun должен быть >= 1.0.4

Обновление Tomcat 6: http://tomcat.apache.org/download-60.cgi

У меня была точно такая же проблема, и обновление решило ее для меня.

Я написал на http://techblog.amphora-research.com/2011/03/tomcat-6-stack-level-too-deep-error-on-windows/, если вас интересуют подробности.

Удачи!

person elskwid    schedule 04.03.2011

Просмотрите конфигурацию startup.bat. Возможно, Tomcat запускается с более высоким значением параметра памяти для Java, что позволяет завершить рекурсию без нехватки памяти.

person blueberryfields    schedule 15.12.2010
comment
Спасибо за предложение, но нехватка памяти является результатом неспособности Bundler найти подходящий ресурс. - person John; 17.12.2010
comment
Может тогда дело в переменных окружения? Служба может запускаться с неправильными настройками. Если вы просмотрите файл bat и проверите настройки, вы можете сбросить службу, чтобы использовать ту же самую (tomcat.apache.org/tomcat-5.5-doc/windows-service-howto.html) - person blueberryfields; 17.12.2010