Wie man Jetty in Spring einbaut und denselben AppContext verwendet, in den es eingebettet wurde?

9

Ich habe einen Spring ApplicationContext, in dem ich die Jetty-Server-Bean deklariere und starte. Inside Jetty Ich habe ein DispatcherServlet und ein paar Controller. Wie können Sie festlegen, dass DispatcherServlet und seine Controller Beans aus demselben ApplicationContext verwenden, in dem Jetty deklariert ist?

Tatsächlich habe ich in diesem äußeren Kontext ein paar Daemon-ähnliche Beans und ihre Abhängigkeiten. Controller in Jetty verwenden die gleichen Abhängigkeiten, daher möchte ich vermeiden, sie innerhalb und außerhalb von Jetty zu duplizieren.

    
Fixpoint 02.07.2010, 08:05
quelle

1 Antwort

5

Ich habe das vor einer Weile gemacht.

Die Dokumentation von Spring schlägt vor, dass Sie ein% co_de verwenden %, um den Anwendungskontext für Servlets zu laden. Verwenden Sie statt dieser Spring-Klasse Ihren eigenen Listener. Das Wichtigste dabei ist, dass Ihr benutzerdefinierter Listener in der Spring-Konfiguration definiert werden kann und den Anwendungskontext kennen kann, in dem er definiert ist. Anstatt also einen neuen Anwendungskontext zu laden, wird nur dieser Kontext zurückgegeben.

Der Hörer würde etwa so aussehen:

%Vor%

und das ContextLoaderListener macht das:

%Vor%

Es ist ein bisschen chaotisch, und kann wahrscheinlich verbessert werden, aber das hat für mich funktioniert.

    
Richard Fearn 02.07.2010, 08:33
quelle