代码之家  ›  专栏  ›  技术社区  ›  Paras Adrian K

在grails应用程序中在运行时修改groovy代码

  •  9
  • Paras Adrian K  · 技术社区  · 15 年前

    当我使用嵌入式JETTY服务器(Tomcat为GraseX 1.2)运行GRAIL应用程序时,我可以在运行时立即对控制器、服务和其他Java文件进行更改,而无需重新启动应用程序。为此,我如何在部署在tomcat(或任何服务器)上的应用程序上实现相同的功能。我注意到webapps下的分解war文件夹有gsp文件,但没有groovy文件。

    3 回复  |  直到 14 年前
        1
  •  9
  •   fabien7474 Jan Tchärmän    15 年前

    完成eric的回答后,就不能在生产环境中动态更改源代码。但是,如果您真的想在live中修改代码,可以:

    1. 更改groovy类,编译它,替换分解的war文件夹中的.class文件并重新启动tomcat(我知道,我知道,这很痛苦,但我不知道更好的方法)
    2. 对于gsp文件,有一个技巧。添加到您的 配置groovy 将以下属性归档: grails.gsp.enable.reload=true . 这将允许您随时更改gsp文件。小心点,因为这会影响表演。见 here 详情
        2
  •  3
  •   Eric Hauser    15 年前

    当将应用程序打包为战争时,Groovy文件被编译成Java字节码(.class文件)并包含在战争中。由于内存泄漏,运行时的文件热交换不适合生产使用。

        3
  •  1
  •   virtualeyes    14 年前

    permgen问题是特定于spring/grails的,还是同样适用于精简的tomcat/groovlet设置?

    就性能而言,编译的groovy文件与未编译的groovy文件相比没有任何好处,对吗?编译步骤只是为了让Java和Groovy工作在一起吗?

    我希望在不久的将来,我们将拥有一个性能良好的完全可重新加载的生产环境,并且没有内存泄漏。

    看起来很傻,grails&rails都没有提供可行的产品重新加载选项(在grails中,要求早晚的permgen死亡)。php显然速度很慢,但是数百万apache/php驱动的站点可以快速地向用户交付内容。如果我们不运行facebook,我们是否应该关心rails阵营中警告我们的性能惩罚?

    从外部看,正在进行的Java PyMGEN问题似乎很荒谬,它是不可解的吗?