当我使用嵌入式jetty服务器(tomcat for grails 1.2)运行我的grails应用程序时,我可以在运行时在运行时更改我的控制器,服务和其他java文件,而无需重新启动应用程序。我如何才能在部署在Tomcat(或任何服务器)上的应用程序上实现同样的功能。我观察到webapps下的爆炸war文件夹有gsp文件,但不是groovy文件。在grails应用程序运行时修改groovy代码
9
A
回答
9
完成Eric的回答,您无法在生产环境中动态更改源代码。但是,如果你真的想修改代码,住,您可以:
- 更改Groovy类,编译它,更换后的.class文件中的分解战争文件夹,重新启动Tomcat(我知道,我知道,这是痛苦但我不知道更好的办法)
- 对于gsp文件,有一个技巧。添加到您的Config.groovy文件以下属性:
grails.gsp.enable.reload=true
。这将允许您在飞行中更改您的gsp文件。小心,因为它会损害性能。有关详细信息,请参见here
3
将应用程序打包为WAR时,Groovy文件被编译为Java字节码(.class文件)并包含在WAR中。由于内存泄漏,在运行时热交换文件不适合生产使用。
1
是Spring/Grails特有的permgen问题,还是在精简的Tomcat/Groovlet设置中同样适用?
从性能角度看,编译的Groovy文件与非编译的正确性没有任何好处?编译步骤仅仅是为了让Java和Groovy一起工作?
我希望在不太遥远的将来,我们将拥有一个完全可重新加载的生产环境,它性能良好,没有内存泄漏。
看起来很愚蠢,Grails & Rails都没有提供可行的生产重载选项(在Grails中,要求早日或晚些时候的permgen死亡)。 PHP看起来很慢,而且数以百万计的Apache/PHP驱动的站点可以快速地向用户提供内容。如果我们没有运行Facebook,我们是否应该关注我们在* Rails阵营中提醒的性能处罚?
从外部看,正在进行的Java permgen问题看起来很荒谬,它不能解决吗?
相关问题
- 1. 在运行时在Grails应用程序中更改数据库
- 2. 部署后修改Grails应用程序
- 3. 在运行时修改程序集?
- 4. 在Groovy/Grails启动时运行查询
- 5. 在grails中运行线程groovy
- 6. 针对websevices的Grails groovy应用程序
- 7. 通过应用程序运行代码
- 8. 运行Android应用程序的代码
- 9. 是否有可以在运行时修改其代码的vb.net程序?
- 10. 如何为grails应用程序执行并发修改测试
- 11. Grails groovy内部代码值
- 12. 如何在退出Vorpal.js应用程序时运行代码?
- 13. 当Android应用程序启动并存在时运行代码
- 14. 运行外部代码/应用程序的Android应用程序?
- 15. Grails - 运行应用程序错误
- 16. 运行grails应用程序的错误
- 17. Grails应用程序将无法运行
- 18. winform应用程序webbrowser错误更改不允许在代码运行时
- 19. 在Android上修改联系人应用程序的源代码
- 20. 的Groovy/Grails的 - 修改基于内容
- 21. 如何在第一次运行应用程序时运行代码?
- 22. 在运行时在java中执行Groovy代码
- 23. Grails groovy代码在视图中混合
- 24. 为什么在运行时无法修改OS内核代码?
- 25. 如何在运行时修改内部JavaScript代码?
- 26. 如何在运行时修改javascript代码?
- 27. 在Wpf应用程序中xaml修改不会在运行时反映
- 28. Grails和Groovy的代码格式化程序?
- 29. 在运行时修改persistence.xml
- 30. 在运行时修改propertyGrid