Domanda

Sono in procinto di distribuire diverse applicazioni Grails in cima ad un singolo server Tomcat, e ho i seguenti dubbi:

  1. In termini di utilizzo della memoria: Fa la differenza per mettere i graal comuni librerie sotto shared / lib invece di metterli in file di guerra di ogni app? Esiste un elenco di quei vasi?
  2. Se è così, c'è un meccanismo di non confezionare quei vasi nel file di guerra per l'ambiente di "produzione"? Sto utilizzando NetBeans 6.7.
  3. che sto per utilizzare Tomcat 5.5; ci sono esperienze che raccomandano di usare 6.0, invece?

Grazie

È stato utile?

Soluzione

Credo che le migliori pratiche sono di mantenere le librerie nella guerra, perché se si aggiorna una libreria che è condiviso allora avete assicurarsi che sia compatibile con tutte le applicazioni che si utilizza. Lo facciamo con graal e con la molla, in generale, in questo modo non c'è bisogno di tornare indietro e fare il test di compatibilità ogni volta che aggiorniamo.

Anche io credo che Tomcat carichi un'istanza della classe per ogni applicazione in modo non lo fai salvare sulla memoria utilizzandolo come una classe comune.

Vedi anche:

fa Tomcat caricare lo stesso file di libreria in memoria due volte se sono in due applicazioni web?

Altri suggerimenti

1) mettere i barattoli in shared / lib o common / lib potrebbe ridurre la quantità di memoria richiesta in PermGen. IMHO il più grande vantaggio è che il caricamento del file guerra è molto più veloce. Ma tenere a mente, ciò che ha detto TripWird, barattoli condivisi legami tutte le applicazioni distribuite alla stessa versione graal. Aggiornamento diventa un "nulla-o-all" gioco.

2) se si utilizza

grails prod war --nojars

poi tutti i file jar sono esclusi dalla guerra.

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