Frage

Ich habe eine jruby / Rails-Anwendung mit:

jruby 1.4.0
Rails 2.3.5
ActiveMQ 5.3.0
Mule ESB 2.2.1

Zur Zeit in unserer environment.rb Datei starten wir Mule in der Initialisierungsliste auf. Dies wird ein großer Schmerz, wenn wir gehen normale Rake Aufgaben zu tun, die nicht über JMS / Mule wie db erfordern. Migrate, da es eine lange Zeit, um Start / Stop-Mule jedes Mal nimmt

Der Code ist ähnlich wie folgt aus:

APP_CONTEXT = Java::our.company.package.service_clients.Initializer.getAppContext(MULE_CONFIG_PATH)

Und wir verwenden APP_CONTEXT die Bohne zu holen, um den entsprechenden Dienst zu verbinden.

Ich versuche, einen Mechanismus, um herauszufinden, durch welche APP_CONTEXT könnte träge instanziert werden (nicht in initialize) all die Schmerzen zu vermeiden, der mit Mule auf initialize bis zur Inbetriebnahme.

Zur Zeit haben wir ein paar Ruby-Client-Klassen, die als before_filter in application_controller wie @data_service = DataService.new(APP_CONTEXT) instanziert werden, die das richtige Java-Client für jede Anforderung für den Einsatz in unserem Controller initialisieren.

Ich bin offen für alle Vorschläge. Ich habe eine harte Zeit, die versuchen, die richtige Stelle zu finden, diese verzögerte Instanziierung zu setzen.

War es hilfreich?

Lösung

Am Ende (und ich weiß nicht, warum ich nicht daran denken habe) Ich habe gerade eine Klasse App gemacht, die eine Klasse Methode hat Rückkehr

@context ||= Java::our.company.package.service_clients.Initializer.getAppContext(MULE_CONFIG_PATH)

Ich bin sicher nicht das, was mir durch den Kopf ging, aber ich dachte, vielleicht, wenn dies durch zwei Funktionen gleichzeitig verwiesen wurde, habe ich zwei verschiedene haben würde instantiations der AppContext, dass eine Klasse in Ruby zu vergessen, wirklich nur ist ein Singleton-Objekt, so dass dies wird den einen Kontext immer wieder zurückkehren.

class App

  def self.context
    @context ||= Java::our.company.package.service_clients.Initializer.getAppContext(MULE_CONFIG_PATH)
  end
end
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top