Domanda

Sto lavorando su un progetto che hanno diversi webapps (Wars) costruiti con Maven e schierati in un Java EE.

Queste guerre condividono alcuni vasetti di business comuni (come uno che contiene oggetti di dominio che vengono caricati dalla modalità di sospensione) e di altri JAR-quadro come Spring e Hibernate.

Usano Spring MVC, e il contesto applicazione carica Hibernate. Come ogni guerra ha la propria Classpath nel servlet container, la cache di Hibernate (EHCache) non è condivisa.

Quello che mi piacerebbe è quello di condividere la cache e anche il fagiolo Hibernate session factory (così come altri fagioli comuni) betweeen le diverse guerre. Penso che questo è possibile con riconfezionamento quelle guerre all'interno di un EAR e poi avrei dovuto fare un XML di configurazione molla con quei fagioli Comuni e nella primavera del XML della guerra usare qualcosa come SingletonBeanFactoryLocator da quello che ho letto.

Quello che sto chiedendo qui è se c'è un modo semplice per farlo, riducendo al minimo le modifiche alle POM le guerre

Nota: ho familiarità con le guerre, Tomcat e servlet, ma non tanto con le orecchie

.

Grazie in anticipo.

È stato utile?

Soluzione

Hmmm ... container Java EE La maggior parte usano classloader isolati per le guerre, anche in un EAR (anche se le specifiche Java EE non mandato classe di isolamento di carico tra i moduli di un singolo EAR) così ho non ci si aspetterebbe di più da un packaging EAR, soprattutto se si desidera che l'applicazione rimanga portatile (cioè se non si vuole fare affidamento su qualsiasi comportamento specifico application server).

Ora, se davvero ha senso per condividere la vostra fabbrica sessione e la cache di 2 ° livello tra le diverse applicazioni, forse prendere in considerazione una loro fusione in un unico WAR. Questo sarebbe il modo più semplice IMO. Ma sarei tentato di chiedere Perché sono separati , allora? Quando le applicazioni sono separati, hanno la maggior parte del tempo la governance separata e non so se la distribuzione insieme sarebbe una buona idea in questo caso.

E se la fusione delle guerre non è un'opzione, prego ci dice quale contenitore che si sta utilizzando.

Altri suggerimenti

Avete preso in considerazione facendo uso di una cache L2 cluster coerente? Se stai usando più server app si potrebbe vedere più benefici allora come sarebbero tutti essere condividono lo stesso cache coerente

Utilizzo di un contesto di applicazione genitore condiviso in un'applicazione multi-primavera guerra

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top