Frage

Ich arbeite an einem Projekt, das in einem Java EE mehrere Webapps (WARs) gebaut mit Maven und bereitgestellt hat.

teilen diese Kriege mehr gemeinsamen Unternehmen JARS (wie ein Domain-Objekte enthalten, die aus dem Ruhezustand geladen werden) und anderen Rahmen JAR-Dateien wie Spring und Hibernate.

verwenden Sie Spring MVC und der Anwendungskontext lädt Hibernate. Da jeder Krieg seine eigene Classpath in dem Servlet-Container hat, wird der Hibernate-Cache (ehcache) geteilt.

Was ich möchte, ist, den Cache zu teilen und auch die Hibernate-Session Fabrik Bohne (sowie andere gemeinsame Bohnen) betweeen die verschiedenen WARs. Ich denke, das ist möglich, indem diese WARs innerhalb einer EAR Umpacken und dann würde ich eine Federkonfiguration mit XML diese commons Bohnen und im Krieg Spring XML Verwendung so etwas wie SingletonBeanFactoryLocator machen müssen aus dem, was ich gelesen habe.

Was ich frage hier ist, wenn es eine einfache Möglichkeit, dies zu tun, minimiert Änderungen in den Krieg POMs

. Hinweis: Ich bin vertraut mit WARs, Kater und Servlets, aber nicht so viel mit den Ohren

Vielen Dank im Voraus.

War es hilfreich?

Lösung

Hmmm ... Die meisten Java EE-Container verwenden isoliert Classloader für WARs, auch in einer EAR (auch wenn die Java EE-Spezifikation tut nicht Mandat Klasse Laden Isolation zwischen den Modulen eines einzelnen EAR) so I würde nicht von einer EAR-Verpackung zu viel erwarten, vor allem, wenn Sie Ihre Anwendung tragbar zu bleiben (dh, wenn Sie nicht auf jedem App-Server ein bestimmtes Verhalten verlassen wollen).

Nun, wenn es wirklich Sinn macht, Ihre Sitzung Fabrik und Ihre 2. Level-Cache zwischen mehreren Anwendungen gemeinsam nutzen, sollten Sie vielleicht in einem einzigen WAR verschmelzen. Das wäre IMO der einfachste Weg sein. Aber ich würde versucht sein, zu fragen, warum sind sie trennen dann? Wenn Anwendungen getrennt sind, haben sie die meiste Zeit getrennt Governance und ich weiß nicht, ob sie den Einsatz zusammen eine gute Idee, in einem solchen Fall wäre.

Und wenn die WARs Verschmelzung keine Option ist, uns bitte sagen, welche Container Sie verwenden.

Andere Tipps

Haben Sie darüber nachgedacht unter Verwendung eines kohärenten gruppierten L2-Cache? Wenn Sie mehr App-Server verwenden können Sie mehr Nutzen sehen dann, wie sie alle die gleichen kohärente Cache

teilen würden

Mit einem gemeinsamen übergeordneten Anwendungskontext in einer Multi-Krieg Frühjahr Anwendung

http://blog.springsource.org/2007/06/11/using-a-shared-parent-application-context-in-a-multi-war-spring-application/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top