Cuando ejecuto mi aplicación Grails usando el servidor de embarcadero incrustado (tomcat for grails 1.2), puedo realizar cambios en mis controladores, servicios y otros archivos Java sobre la marcha en tiempo de ejecución sin reiniciar la aplicación. ¿Cómo puedo lograr la misma funcionalidad en mi aplicación implementada en Tomcat (o cualquier servidor) para ese asunto? He observado que la carpeta de guerra explosionada en webapps tiene archivos gsp pero no los archivos groovy.Modificando el código Groovy en tiempo de ejecución en la aplicación Grails
Respuesta
Completando la respuesta de Eric, no puede cambiar sobre la marcha el código fuente en el entorno de producción. Sin embargo, si realmente desea modificar su código en directo Puede:
- cambiar la clase maravilloso, compilarlo, reemplazar el archivo .class en la carpeta de la guerra explotó y reiniciar Tomcat (lo sé, lo sé, es doloroso, pero no sé una mejor manera)
- Para archivos gsp, hay un truco. agregue a su archivo Config.groovy la siguiente propiedad:
grails.gsp.enable.reload=true
. Esto le permitirá cambiar sobre la marcha su archivo gsp. Tenga cuidado porque dañará el rendimiento. Ver para más detalles here
Cuando empaqueta su aplicación como GUERRA, los archivos de Groovy se compilan en el bytecode de Java (archivos .class) y se incluyen en WAR. El intercambio de archivos en tiempo de ejecución no es adecuado para el uso de producción debido a fugas de memoria.
Se PermGen tema específico a la primavera/Grails o haría la misma bodega cierto en una configuración de Tomcat/Groovlet simplificada?
En cuanto al rendimiento, no hay beneficio para el archivo compilado de Groovy vs. no compilado, ¿correcto? ¿El paso de compilación es solo para hacer que Java y Groovy trabajen juntos?
Espero que en un futuro no muy lejano tengamos un entorno de producción totalmente recargable que funcione bien y no tenga pérdidas de memoria.
Parece tonto que los rieles & de Grails no ofrecen ninguna opción viable de recarga de producción (en Grails, solicitando una muerte por permgen tarde o temprano). PHP es aparentemente lento como un perro, y sin embargo millones de sitios impulsados por Apache/PHP entregan contenido a los usuarios en un abrir y cerrar de ojos. Si no estamos ejecutando Facebook, ¿deberíamos preocuparnos por las penalizaciones de rendimiento que se nos advierte en los campamentos de * Rails?
Visto desde fuera, la cuestión del permgen Java en curso parece absurda, ¿es insoluble?
- 1. JSON en Groovy/Grails
- 2. Experiencias usando Groovy ++ en Grails
- 3. Cambiar la versión Groovy de Grails
- 4. ¿Cómo incluir Groovy 2.0 en una aplicación Grails 2.1.0 implementada?
- 5. Grails vs Gaelyk para la nueva aplicación Groovy App Engine
- 6. Cambio de código en tiempo de ejecución
- 7. Depuración de JDB del código de Groovy/Grails
- 8. Groovy + OSGi o Grails?
- 9. cargar código python en tiempo de ejecución
- 10. Ejecución del código de tiempo en Android
- 11. Groovy/Grails - Incapaz de resolver la clase
- 12. Plugin Groovy/Grails para Sonar
- 13. Error en Mockito con Grails/Groovy
- 14. ¿Cómo modificar el código de JavaScript en tiempo de ejecución?
- 15. Convierta la aplicación Grails en el complemento
- 16. Mida el tiempo de ejecución en C++ código OpenMP
- 17. Grails: Clases de Servicios VS Groovy
- 18. Aumenta Xms y Xms para la aplicación de ejecución grails
- 19. Grails/Groovy: utilizando múltiples @TestMixin
- 20. Parse_url equivalent in grails/groovy?
- 21. Inyectando código en ejecutable en tiempo de ejecución
- 22. Eclipse no compila secuencias de comandos Groovy en clases Java en tiempo de ejecución
- 23. Analizando y modificando el código IR LLVM
- 24. ¿Cómo ejecutar un Groovy Script desde mi aplicación Grails?
- 25. Solución de problemas Grails/Groovy memory leaks?
- 26. ¿Editor para groovy y grails?
- 27. Generar, compilar y usar código Java en tiempo de ejecución?
- 28. Mida el tiempo de ejecución en C#
- 29. Grails BuildConfig.groovy, ¿diferencia entre compilación, compilación y tiempo de ejecución?
- 30. Modificando matriz en la subrutina