2010-01-30 8 views
7

Je suis sur le point de déployer plusieurs applications Grails sur un seul serveur Tomcat, et je les doutes suivants:applications Grails multiples sur Tomcat

  1. En termes d'utilisation de la mémoire: Est-il une différence mettre les bibliothèques communes de grails sous shared/lib au lieu de les mettre dans les fichiers de guerre de chaque application? Y a-t-il une liste de ces pots?
  2. Si oui, existe-t-il un mécanisme pour ne pas empaqueter ces fichiers dans le fichier war pour l'environnement de "production"? J'utilise NetBeans 6.7.
  3. Je suis sur le point d'utiliser Tomcat 5.5; Y a-t-il des expériences qui recommandent d'utiliser 6.0 à la place?

Merci

Répondre

5

Je pense que les meilleures pratiques sont de garder les bibliothèques dans la guerre, parce que si vous mettez à jour une bibliothèque qui est partagée alors vous assurer qu'il est compatible avec toutes vos applications qui utilisent. Nous faisons cela avec des grails et avec le printemps en général de cette façon, nous ne devons pas revenir en arrière et faire des tests de compatibilité chaque fois que nous améliorons.

Aussi je crois que tomcat charge une instance de la classe par application de sorte que vous ne sauvegardez pas sur la mémoire en l'utilisant comme une classe commune.

Voir aussi:

Does Tomcat load the same library file into memory twice if they are in two web apps?

5

1) mettre les pots dans shared/lib ou common/lib peut réduire la quantité de mémoire requise dans PermGen. IMHO le plus grand avantage est que le téléchargement du fichier de guerre est beaucoup plus rapide. Mais gardez à l'esprit, ce que dit TripWird, les jars partagés lie toutes les applications déployées à la même version de grails. La mise à niveau devient un jeu "rien ou tout".

2) si vous utilisez

grails prod war --nojars 

alors tous les fichiers jar sont exclus de la guerre.

Questions connexes