Comment puis-je faire Tomcat arrêter la mise en cache ma servlet réponses?
Je suis en train d'apprendre les Servlets de programmation, à l'aide d'Apache Tomcat 6 sur une Ubuntu 8.10 machine, et je suis en cours d'exécution avec une très ennuyeux problème, apparemment, liées à la mise en cache.
C'est ce que je fais: - je écrire une servlet, le mettre dans une belle structure de répertoire et de le déployer via les Applications Web Tomcat Manager. Il fonctionne comme prévu. Puis-je modifier la servlet, recompiler et essayez d'accéder à nouveau, mais Tomcat revient toujours la même vieille version. Le rechargement de l'Application ou même en redémarrant le serveur ne fonctionne pas. La seule chose qui fonctionne est "annulant le déploiement" de l'Application, puis de la déployer une fois de plus.
Je dois le faire à chaque fois que je fais quelque petit changement sur mon code. Elle le suce.
Je suis sûr qu'il ya un moyen de contourner cela, mais je n'ai pas trouvé la réponse nulle part sur le web (et j'ai fait une recherche beaucoup). Je serais vraiment reconnaissant de toute aide. Merci!
OriginalL'auteur | 2009-01-06
Vous devez vous connecter pour publier un commentaire.
Les conseils de Adeel Ansari est imparfait: il ne faut jamais modifier CATALINA_HOME/conf/context.xml avec webapp de configuration spécifiques. C'est ce que your-webapp/META-INF/context.xml est pour.
Vous devez également ne jamais spécifier le "docBase" attribut de <Contexte>.
Vous devez également ne jamais spécifier le "chemin" de l'attribut de <Contexte>.
L'OP a plusieurs options:
Utiliser le manager de recharger l'application web (undeploy/redéployer ne devrait pas être nécessaire: un simple rechargement devrait fonctionner)
( http://tomcat.apache.org/tomcat-6.0-doc/manager-howto.html#Reload_An_Existing_Application )
Définir l'élément dans META-INF/context.xml pour avoir reloadable="true"
( http://tomcat.apache.org/tomcat-6.0-doc/config/context.html )
Avec tout le respect que DONC, si vous avez besoin d'aide avec Tomcat, rejoindre les utilisateurs de la liste de diffusion et obtenir de vraies réponses.
Par la tomcat.apache.org/tomcat-6.0-doc/config/context.html
Je dirais que toute la configuration requise pour une application web être regroupés dans le fichier WAR et non pas caché dans un autre lieu (comme
conf/context.xml
). La définition des Sources de données JNDI est approprié pour server.xml et puis, à l'aide de<ResourceLink>
, mais vous ne voulez pas modifier la configuration par défaut pour tous les webapps sur l'ensemble du conteneur en modifiantconf/context.xml
.d'accord avec @PetrGladkikh et de s'excuser auprès de réponse de Christophe Schultz. La documentation officielle de page sur la définition de quelque chose de catalina context.xml et d'en déduire en application xml. La première est dans les mains de l'Administrateur , la prochaine Programmeur. C'est technique, très utile, donner de bonnes possibilités (les plages séparées) pour les deux
OriginalL'auteur Christopher Schultz
J'ai rencontré des problèmes similaires avec Tomcat 5.5. Je n'ai jamais trouvé la cause, mais j'ai travaillé autour de supprimer le dossier correspondant à la webapp de %CATALINA_HOME%/travail/Catalina/localhost. Ce n'est pas une solution idéale, mais il vous évite de devoir annuler le déploiement d'/redéployer l'ensemble de votre demande.
En fait, j'avais déjà vu ce truc quelque part d'autre, mais il ne fonctionne pas pour moi. CATALINA_HOME/travail/Catalina/localhost/my_project_name est juste un répertoire vide ici, et rien ne change si je le supprimer.
Il pourrait être mise en cache des choses ailleurs. Ou n'êtes-vous pas d'avoir tout les Jsp ou jamais demandé aucun pour le moment. Parce que /travail/Catalina/localhost/... est un répertoire compilé les Jsp sont conservés, pas les servlets ou d'autres classes.
OriginalL'auteur Brian Matthews
Sous votre TOMCAT_HOME/conf/, vous trouverez un fichier nommé Context.xml. Le contenu pourrait ressembler à ci-dessous,
Les deux lignes sont sans commentaire ici, vous devez décommenter la fois de trop. Il est probable que vous aurez le 2ème commenté ou peut-être pas à tous. Essayez de dé-commenter, ou de l'ajouter dans ce dernier cas. Je suis en supposant que vous déployez votre application sous TOMCAT_HOME/webapps.
[Édité]
Essayez d'utiliser docBase, et chemin attribure sous votre Contexte élément. Ci-dessous est l'exemple
REMARQUE: Ne pas inclure WEB_INF
[Édité]
Peut-être que je suis absent quelque chose. Vérifier cette. C'est la même chose, mais en beaucoup plus clair et descriptif, y compris quelques autres options.
BTW, je suis en utilisant le Web Application Manager pour le déploiement (et annuler le déploiement d') -- comme je le comprends, il va sous l'CATALINA_BASE/webapps.
Oui, CATALINA_HOME ou de BASE est la même. Êtes-vous à l'aide de netbeans? Avez-vous un contexte distinct de fichier pour votre application? Je veux dire <votre app>.xml
Je ne suis pas à l'aide de Netbeans. Le seul fichier XML que j'ai est web.xml.
Avez-vous essayé de faire de mon addendum?
OriginalL'auteur Adeel Ansari
Vous ne dites pas si vous utilisez ubuntu tomcat ou d'un téléchargement séparé de tomcat.apache.org. Si vous utilisez ubuntu, essayer de la rendre plus simple avec l'aide d'un téléchargement séparé. La norme de téléchargement est très facile à administrer et plutôt destinés à la sortie de la boîte. Il pourrait être (je ne sais pas) que le ubuntu one peut être configuré de plus en plus vers une utilisation en production, par exemple, il pourrait être un peu durci.
Recommandé la mise en production pour tomcat est juste ce que vous décrivez (par exemple, pas d'auto-déployer etc). Le développement de réglage est plus facile à utiliser.
OriginalL'auteur Olaf Kock
Si vous utilisez Netbeans, il est automatiquement recompile la classe et l'injecte dans l'exécution de l'application web lorsque vous enregistrez le fichier. Il n'y a pas d'étapes supplémentaires impliqués, cliquez sur enregistrer.
OriginalL'auteur Sarel Botha