当我使用嵌入式jetty服务器(tomcat for grails 1.2)运行我的grails应用程序时,我可以在运行时即时更改我的控制器,服务和其他java文件,而无需重新启动应用程序。如何在我的Tomcat(或任何服务器)上部署的应用程序上实现相同的功能。我观察到webapps下的爆炸war文件夹有gsp文件,但没有groovy文件。
答案 0 :(得分:9)
完成Eric的回答,您无法动态更改生产环境中的源代码。但是,如果您真的想要在现场修改代码,可以:
grails.gsp.enable.reload=true
。这将允许您动态更改您的gsp文件。小心,因为它会损害性能。有关详细信息,请参阅here 答案 1 :(得分:3)
将应用程序打包为WAR时,Groovy文件将编译为Java字节码(.class文件)并包含在WAR中。由于内存泄漏,在运行时热插拔文件不适合生产使用。
答案 2 :(得分:1)
是否特定于Spring / Grails的permgen问题,或者在精简的Tomcat / Groovlet设置中是否同样适用?
在性能方面,编译Groovy文件与非编译文件没有任何好处,对吗?编译步骤是为了让Java和Groovy一起工作吗?
我希望在不久的将来,我们将拥有一个表现良好的完全可重新加载的生产环境,并且没有内存泄漏。
Grails&amp ;; Rails都没有提供可行的生产重新加载选项(在Grails中,要求早晚的permgen死亡)。 PHP看起来很慢,但数以百万计的Apache / PHP驱动的站点可以快速向用户提供内容。如果我们没有运行Facebook,我们是否应该关注* Rails阵营中警告的性能损失?
从外面看,正在进行的Java permgen问题似乎很荒谬,难道无法解决吗?