tag - tipos de etiquetas jsp
¿Por qué mis cambios JSP no se reflejan sin reiniciar Tomcat? (12)
(Tomcat 7.0.62) Tuve que ir a CATALINA_HOME / temp / xx -mysite /, encontrar mi archivo jsp en ese árbol de directorios y editarlo.
xx es un número de prefijo aleatorio (?), en mi caso 11, pero cada sitio tiene uno.
Estoy editando archivos JSP que residen directamente dentro de tomcat/webapps/myapp/WEB-INF
, pero para ver los cambios, tengo que reiniciar el servidor. Por lo que sé, los cambios de JSP no requieren que reinicies el servidor. La única configuración que encontré que está relacionada con la recarga automática es recargable = "verdadero"
Establézcalo en verdadero si desea que Catalina supervise las clases en / WEB-INF / classes / y / WEB-INF / lib para ver los cambios, y recargue automáticamente la aplicación web si se detecta un cambio.
Usé este atributo en context.xml
, pero el problema persiste. ¿Cuál podría ser la otra razón posible para no detectar cambios en los archivos JSP sin reiniciar?
@Bozho: este es el extracto de web.xml
. ¿Necesito cambiar algo?
<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>
Abra su archivo context.xml
en su carpeta META-INF y establezca antiJARLocking
en falso.
Su árbol de directorios debe ser el siguiente:
Web> META-INF> context.xml
Aunque es fácil de entender, esto es lo que significa "establecer el desarrollo en verdadero" (más para una referencia rápida):
<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>
Y luego reiniciar
En realidad, el motor jsp verifica si la página jsp es anterior a su página de servlet y, basándose en esto, decide si se necesitan o no cambios.
Estoy usando TomEE 1.7.2 en Windows 7 con Eclipse. La solución que funcionó para mí fue simplemente cambiar el archivo web.xml para el servidor TomEE en localhost-config (en mi IDE) para que el param de desarrollo init sea verdadero:
<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>
Tendrá que ir al proyecto del servidor en Eclipse y editar el archivo web.xml y establecer ''desarrollo'' en verdadero.
Tuve el mismo problema y solucioné el problema. Asegúrese de que en conf/context.xml
no tenga la siguiente configuración
<Context antiJARLocking="true" antiResourceLocking="true">
Si tiene ese, elimine antiJARLocking="true" antiResourceLocking="true"
, solo escriba
<Context>
Una respuesta aún más tardía ...
Si configura "antiResourceLocking" en "true" en el archivo de contexto, puede evitar que el Tomcat vuelva a cargar JSP ( Bugzilla 37668 ).
Esto está documentado en el documento de Tomcat , en la explicación del parámetro "antiResourceLocking"
Una respuesta tardía, cualquier otra persona puede encontrar esto útil sin embargo.
Comprueba los permisos en la carpeta Tomcat, he probado muchas otras soluciones y no funcionó.
Finalmente di mi permiso de "cuenta de usuario" "Control total" a la carpeta Tomcat y Tomcat recogió los cambios cada vez que hacía un cambio en JSP. Supongo que estás usando Windows. El razonamiento detrás de esto era: cada vez que realiza un cambio en JSP, debe ser compilado e implementado (escrito) en la carpeta webapps. Si no hay permiso de "escritura" en esa carpeta, fallará silenciosamente. Esto estaba sucediendo en mi caso. Entonces, si reloadable = true
y development = true
en context.xml no funcionan, prueba esta corrección de permiso.
Estoy usando Tomcat 7 en Windows 7.
Yo también enfrenté este problema al hacer cambios jsp en myeclipse, esos no se reflejan en la aplicación mientras se ejecuta. Espero que estos controles te ayuden.
- Haga doble clic en Servidor Tomcat desde MyEclipse.
- haga clic en el menú Publicación desde la ventana de Resumen.
- Seleccione el botón de radio "Publicar automáticamente cuando cambien los recursos"
- ingrese el tiempo de intervalo de publicación como 1 segundo.
Espero que esto ayude.
En los documentos de tomcat , vea la configuración de development
. Debe establecerse en verdadero para poder volver a cargar jsps.
desarrollo - ¿Jasper se usa en modo desarrollo? Si es verdadero, la frecuencia con la que se verifican las JSP para la modificación se puede especificar a través de modifyTestInterval parameter.true o false, default true.
Esto está en tu CATALINA_HOME/conf/web.xml
Además, si necesita actualizar una jsp en un entorno de producción sin reiniciar, puede ir a CATALINA_HOME/work/Catalina/localhost/contentName/org/apache/jsp
y eliminar los archivos your_jsp.java
y your_jsp.class
. Se recrearán la próxima vez que se acceda a ellos.
Editar: después de proporcionar su configuración, y comentar sobre no actualizar el contenido, tengo otro sin embargo: borrar la caché de su navegador, o abrir la página desde otro navegador.
Sincronizar el servidor y el tiempo del cliente
puede verificar la hora de su servidor y la hora del sistema del cliente. Para mí, hace unos días, después de cambiar el tiempo del servidor funcionaba correctamente. Reflejó los cambios de los archivos .jsp .