當我使用嵌入式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/Groovy的:在運行時修改「查詢」封
- 2. 運行Groovy應用程序
- 3. 在運行時在Grails應用程序中更改數據庫
- 4. 部署後修改Grails應用程序
- 5. 在運行時修改程序集?
- 6. 在運行時修改Android應用程序
- 7. 在grails中運行線程groovy
- 8. 在Geronimo中運行grails應用程序
- 9. 在Groovy/Grails啓動時運行查詢
- 10. 在運行時修改Info.plist以設置「應用程序是代理(UIElement)」
- 11. Groovy腳本到Grails應用程序
- 12. 針對websevices的Grails groovy應用程序
- 13. 通過應用程序運行代碼
- 14. 運行Android應用程序的代碼
- 15. 是否有可以在運行時修改其代碼的vb.net程序?
- 16. 如何爲grails應用程序執行併發修改測試
- 17. Grails groovy內部代碼值
- 18. 在Java 8下運行時,此Groovy代碼無法運行
- 19. 如何在退出Vorpal.js應用程序時運行代碼?
- 20. 當Android應用程序啓動並存在時運行代碼
- 21. 在應用程序啓動時運行代碼OSX
- 22. 在應用程序關閉時運行「終止」代碼
- 23. 如何在運行iOS應用程序時查看源代碼?
- 24. 運行外部代碼/應用程序的Android應用程序?
- 25. 無法運行Grails應用程序?
- 26. 運行grails應用程序的錯誤
- 27. Grails - 運行應用程序錯誤
- 28. Grails應用程序將無法運行
- 29. winform應用程序webbrowser錯誤更改不允許在代碼運行時
- 30. 如何在Windows應用程序運行時更改TextBox的FontFamily(代碼隱藏)