У меня есть приложение jruby / rails, использующее:
jruby 1.4.0
Rails 2.3.5
ActiveMQ 5.3.0
Mule ESB 2.2.1
В настоящее время в нашем файле environment.rb мы запускаем Mule в инициализаторе. Это становится большой болью, когда мы выполняем обычные рейк-задачи, для которых не требуется JMS / Mule, например db: migrate, поскольку для запуска / выключения Mule требуется много времени.
Код похож на этот:
APP_CONTEXT = Java::our.company.package.service_clients.Initializer.getAppContext(MULE_CONFIG_PATH)
И мы используем APP_CONTEXT
для извлечения компонента для подключения к соответствующему сервису.
Я пытаюсь выяснить какой-то механизм, с помощью которого APP_CONTEXT можно лениво создавать (не инициализировать), чтобы избежать всех проблем, связанных с запуском Mule при инициализации.
В настоящее время у нас есть несколько клиентских классов ruby, которые создаются как before_filter в application_controller, например @data_service = DataService.new(APP_CONTEXT)
, которые инициализируют надлежащий Java-клиент для каждого запроса для использования в наших контроллерах.
Я открыт для всех предложений. Я с трудом пытаюсь найти подходящее место, чтобы поставить этот ленивый экземпляр.