Comment puis-je faire Tomcat pré-compiler les Jsp au démarrage?
Nous utilisons à la fois Apache Tomcat 6.0 et de la Jetée 6, où je travaille. Nous utilisons principalement de la Jetée pour les tests (c'est super pour l'embarqué dans JUnit tests) et Tomcat pour la production.
Par défaut, Tomcat compile les Jsp à la volée que les utilisateurs en font la demande. Mais cela entraîne une dégradation des performances pour le premier coup. Il met également en lumière bizarre bugs dans Tomcat, JSP compilateur.
La La documentation de Tomcat donne des recommandations pour la pré-compilation des pages Jsp au moment de la construction à l'aide de Ant (et un plugin Maven est également disponible)... mais le résultat de la GUERRE contient Tomcat-choses spécifiques, par exemple PageContextImpl.proprietaryEvaluate, on ne peut donc pas l'utiliser dans la Jetée.
Est-il un drapeau ou d'un paramètre, nous pouvons utiliser quelque part pour forcer le serveur Tomcat à précompiler toutes les pages Jsp dès que la GUERRE est initialisé? Nous sommes prêts à attendre un peu plus longtemps sur le démarrage de cette.
À l'avance: je sais qu'il y a un moyen de pré-compilation exactement un JSP en précisant un /servlet/load-on-startup balise web.xml pour une JSP. Mais pour des dizaines ou même des centaines de pages Jsp qui devient ingérable.
le lien pour bizzarre bugs est faux. Je présume que le https est entré sans un colon, de la confusion...
je voudrais utiliser deux versions ou deux sorties - un pour la jetée et un pour tomcat, de cette façon n'ont pas besoin d'attendre pour tomcat pour compiler toutes les pages jsp chaque fois que vous redémarrez
OriginalL'auteur Dan Fabulich | 2009-01-31
Vous devez vous connecter pour publier un commentaire.
http://www.devshed.com/c/a/BrainDump/Tomcat-Capacity-Planning/
Ce fichier de build trouverez tous vos webapp de fichiers JSP, les compiler dans servlets, et de générer de la servlet mappages pour ceux JSP servlets. La servlet carte pings il génère devez aller dans votre webapp de l'WEB-INF/web.xml fichier, mais il serait difficile d'écrire un fichier Ant qui sait comment insérer la servlet mappages dans votre web.xml fichier dans un moyen reproductible à chaque fois que le fichier de génération de pistes. Au lieu de cela, nous avons utilisé une entité XML inclure, de sorte que la servlet générée mappages d'aller dans un nouveau fichier à chaque fois que le fichier de génération de pistes et que le servlet mappages de fichier peut être inséré dans votre web.xml fichier via l'entité XML mécanisme inclus. Pour l'utiliser, votre webapp WEB INF/web.xml doit avoir une entité spéciale déclaration en haut du fichier, en plus d'une référence à l'entité dans le contenu de la web.xml le fichier où vous voulez que la servlet mappages de fichier à inclure. Voici comment un vide servlet 2.5 webapp de l'web.xml fichier ressemble avec ces modifications:
Assurez-vous que votre webapp de l'web.xml fichier a la DTD en ligne (balise DOCTYPE) tout le chemin en haut du fichier et de la servlet 2.5 web-app déclaration de schéma ci-dessous. Alors, partout où vous voulez insérer la servlet générée mappages dans votre web.xml fichier, mettre de l'entité de référence &jspc-webxml; . Rappelez-vous, l'entité de référence commence par une esperluette ( & ), puis le nom de l'entité, et se termine par un point-virgule ( ; ).
Pour utiliser le fichier de compilation, il suffit de modifier et de définir toutes les propriétés en haut de valeurs qui correspondent à votre configuration, puis exécutez-le comme ceci:
$ ant -f pre-compile-jsps.xml
OriginalL'auteur ariso
Si vous allez avec la solution mentionnée par duffymo pointant vers Vinny Menuisier du blog, j'ai une astuce. Il est un domaine qui a causé mon conteneur pour accrocher indéfiniment, tout en communiquant avec localhost (en particulier dans le privé méthode connect ()). À l'aide de la suite de hack a été ma solution:
La fixation d'un délai et d'ignorer les SocketTimeoutException travaillé (mais certes pas la meilleure solution). Aussi, l'utilisation de cette procédure signifie que vous devez spécifier les pages Jsp dans web.xml. Cela était suffisant pour mes besoins.
OriginalL'auteur bphilipnyc