web-dev-qa-db-fra.com

Pourquoi mes modifications JSP ne sont-elles pas répercutées sans redémarrer Tomcat?

J'édite des fichiers JSP qui résident directement dans Tomcat/webapps/myapp/WEB-INF, mais pour voir les modifications, je dois redémarrer le serveur. Autant que je sache, les modifications JSP ne vous obligent pas à redémarrer le serveur. La seule configuration que j'ai trouvée et qui est liée au rechargement automatique est reloadable = "true"

Définissez la valeur sur true si vous souhaitez que Catalina prenne surveillez les classes dans /WEB-INF/classes/ et/WEB-INF/lib pour les modifications, et recharger automatiquement le Web application si un changement est détecté.

J'ai utilisé cet attribut dans le context.xml, mais le problème persiste. Quelle pourrait être l'autre raison possible de ne pas détecter les modifications dans les fichiers JSP sans redémarrer?

@Bozho: Ceci est l'extrait de web.xml. Dois-je changer quelque chose?

 <servlet>
        <servlet-name>jsp</servlet-name>
        <servlet-class>org.Apache.jasper.servlet.JspServlet</servlet-class>
        <init-param>
            <param-name>fork</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <param-name>xpoweredBy</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>3</load-on-startup>
    </servlet>
27
Rakesh Juyal

Dans les documents Tomcat , reportez-vous au paramètre development. Il doit être défini sur true pour que jsps soit rechargé.

development - Jasper est-il utilisé en mode développement? Si la valeur est true, la fréquence à laquelle les modifications des JSP sont vérifiées peut être spécifiée via le paramètre modificationTestInterval.true ou false, true par défaut.

Ceci est dans votre CATALINA_HOME/conf/web.xml

En outre, si vous devez actualiser un fichier JSP dans un environnement de production sans redémarrage, vous pouvez accéder à CATALINA_HOME/work/Catalina/localhost/contentName/org/Apache/jsp et supprimer les fichiers your_jsp.Java et your_jsp.class. Ils seront recréés lors de leur prochain accès.

Modifier: après avoir fourni votre configuration et vos commentaires sur le fait de ne pas actualiser le contenu, j’en ai un autre: effacez le cache de votre navigateur ou ouvrez la page à partir d’un autre navigateur.

27
Bozho

Une réponse encore plus tardive ... 

Définir "antiResourceLocking" sur "true" dans le fichier de contexte peut empêcher le rechargement de JSP par Tomcat ( Bugzilla 37668 ).

Ceci est documenté dans le document Tomcat doc , dans l'explication du paramètre "antiResourceLocking"

9
kkk

J'ai eu le même problème et résolu le problème. Assurez-vous que dans conf/context.xml vous n’avez pas la configuration suivante 

<Context antiJARLocking="true" antiResourceLocking="true">

Si vous en avez un, supprimez les deux antiJARLocking="true" antiResourceLocking="true", écrivez simplement

<Context>
4
Rajan Kumar Kharel

Aussi simple que cela puisse paraître, voici ce que signifie "définir le développement comme une réalité" (plus pour une référence rapide):

<servlet>
    <servlet-name>jsp</servlet-name>
    <servlet-class>org.Apache.jasper.servlet.JspServlet</servlet-class>
    <init-param>
        <param-name>fork</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param>
        <param-name>xpoweredBy</param-name>
        <param-value>false</param-value>
    </init-param>
    <!-- Add the following init-param -->
    <init-param>
        <param-name>development</param-name>
        <param-value>true</param-value>
    </init-param>
    <load-on-startup>3</load-on-startup>
</servlet>

Et puis redémarrer.

3
Beez

Une réponse tardive pourrait être utile à tout le monde.

Vérifiez les autorisations sur le dossier Tomcat, j'ai essayé beaucoup d'autres solutions et cela n'a pas fonctionné. 

Enfin, j'ai donné à mon dossier "Tomcat" l'autorisation "Contrôle total" de mon compte d'utilisateur. Tomcat a pris connaissance des modifications chaque fois que je modifiais JSP. Je suppose que vous utilisez Windows . La raison en était: chaque fois que vous modifiez un fichier JSP, il doit être compilé et déployé (écrit) dans le dossier webapps. S'il n'y a pas d'autorisation «d'écriture» sur ce dossier, il échouera silencieusement. Cela se passait dans mon cas. Par conséquent, si reloadable = true et development = true dans le fichier context.xml ne fonctionnent pas, essayez ce correctif.

J'utilise Tomcat 7 sur Windows 7.

2
cherit

Synchroniser l'heure du serveur et du client

vous pouvez vérifier l'heure de votre serveur et l'heure du système client. Pour moi, il y a quelques jours après avoir changé l'heure du serveur correctement travaillé. Il reflétait les modifications des fichiers .jsp.

1
lighthouse

J'utilise TomEE 1.7.2 sur Windows 7 avec Eclipse. La solution qui a fonctionné pour moi consistait simplement à modifier le fichier web.xml du serveur TomEE sur localhost-config (dans mon IDE) afin que le paramètre de développement initial soit à la valeur true:

<servlet>
    <servlet-name>jsp</servlet-name>
    <servlet-class>org.Apache.jasper.servlet.JspServlet</servlet-class>
    <init-param>
        <param-name>fork</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param>
        <param-name>xpoweredBy</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param>
        <param-name>development</param-name>
        <param-value>true</param-value>
    </init-param>
    <load-on-startup>3</load-on-startup>
</servlet>
0
Warren Smith

(Tomcat 7.0.62) Je devais accéder à CATALINA_HOME/temp/xx -mysite /, trouver mon fichier jsp dans that arborescence de répertoires et le modifier.

xx est un préfixe aléatoire (?), dans mon cas 11, mais chaque site en avait un.

0
denispyr

Ouvrez votre fichier context.xml dans votre dossier META-INF et définissez antiJARLocking sur false. 

Votre arborescence de répertoires devrait être la suivante:

Web> META-INF> context.xml

0
Bic Mitchun

Vous devez accéder au projet de serveur dans Eclipse, modifier le fichier web.xml et définir 'development' sur true.

0
user2283714

Moi aussi, j’ai fait face à ce problème lors de modifications jsp dans myeclipse, celles-ci ne sont pas reflétées dans l’application en cours d’exécution. J'espère que ces vérifications vous aideront.

  1. Double-cliquez sur Tomcat Server dans MyEclipse.
  2. cliquez sur le menu Publication dans la fenêtre de vue d'ensemble.
  3. Sélectionnez le bouton radio "Publier automatiquement lorsque les ressources changent"
  4. entrez le temps d'intervalle de publication en 1 seconde.

 enter image description here  enter image description here

J'espère que cela t'aidera.

0
Mdhar9e