Last spring-Kontext in einem EJB-basierten Anwendung
Folgendes ist die situation :
Habe ich eine business-Schicht, das ist ein EJB-Projekt. In der Tat, es ist nur eine EJB, die erstellt wird. Dieser EJB verantwortlich ist, setzen Sie das service-Klassen auf anderen Ebenen, ruft die EJB. Ich möchte im Frühjahr (zu verwenden mit DI-Funktion) in dieser Schicht.
Meine Sorge ist, was ist der beste Weg, um laden Sie die spring-Kontext business-Schicht, so dass die Feder Kontext nicht geladen, wieder und wieder, wenn der EJB aufgerufen wird ?
(In einem Web-Projekt ist es von Vorteil, vielmehr die Konfiguration der spring-Kontext in der contextLoaderListener, und es wird nur einmal geladen, wenn die Anwendung gestartet wird)
Habe ich gedacht, einschließlich Feder in der gleichen Ebene, weil :
- Konfigurieren Sie die Abhängigkeiten aller DAO-und service-Klassen und injizieren Sie, wo immer notwendig.
- Zu verwenden, spring-Unterstützung für den Ruhezustand in der business-Schicht.
- Einfache Unit-Tests, durch die Injektion von Eigenschaften in Klassen und die Simulation derselben. Nicht brauchen, um ausführen die anderen Ebenen wieder und wieder, um zu testen, meine business-Klassen/Methoden.
- Nutzen zu können, AOP (Aspect Oriented Programming) für die Protokollierung und Methode Ebene überwachen.
Bitte helfen Sie mir was auf die beste Art und Weise, die zum laden des spring-context in einem EJB-Projekt. Ich will auch wissen , ob es irgendwelche alternativen, wenn ich laden kann, das gleiche in der app-server (ich verwende die Web sphere app server).
Dank und Grüße,
Jitendriya Dash
- Nicht EJB 3.1 hat seine eigene depencency injection-framework, und würde die CDI wurde besser integriert, ich müssen Sie nur eine leichte DI?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Feder sollte so konfiguriert werden, als Teil Ihrer Anwendung in der üblichen Weise, die Sie immer stellen. Dann benötigen Sie Zugriff auf die Spring-Bean vom EJB-Schicht. Zugang (angepasst aus diesem post), erstellen Sie eine Spring-bean wie folgt:
Dann zum Aufruf der bean in Frage, die aus der legacy-app:
Den Spring Kontext initialisiert wird, sobald, und Ihre EJB-Schicht zugreifen können wird.
Für EJB3, Spring empfiehlt den Einsatz von EJB3-Injektion Interceptor. Im Grunde geben Sie Ihre Frühjahr Zusammenhang mit einem ContextSingletonBeanFactoryLocator was bedeutet, dass die Erstellung Spring-Kontext in einem beanContextRef.xml in Ihren Klassenpfad ein. Wahrscheinlich als Teil Ihres OHRS. Die SpringBeanAutowiringInterceptor spritzt Ihre Bohne in Ihrer EJB.
Kennzeichnung der EJB-wurde als Singleton (
@Singleton
). Und die Speicherung der spring-Kontext in einer Variablen in diesem bean, nachdem es einmal entstanden ist, so dass Sie wieder den gleichen Kontext immer wieder.