【问题标题】:How can I pass Java System Properties to the JVM when executing "run-app" in Grails 2.3.1在 Grails 2.3.1 中执行“run-app”时,如何将 Java 系统属性传递给 JVM
【发布时间】:2013-10-22 16:46:09
【问题描述】:

在 Grails 2.3.1 中执行“run-app”时,如何将 Java 系统属性传递给 JVM?运行“grailsw run-app”时会启动两个 JVM。 Grails 控制台和运行我的 Grails 应用程序的 tomcat 容器。我尝试将它们附加在 Grails 目标命令之间和之前。我感觉我需要修改一个脚本。

501 640 622 0 9:39AM ttys000 1:20.20 /Library/Java/Home/bin/java -server -Xmx768M -Xms64M -XX:PermSize=32m -XX:MaxPermSize=256m -Dfile.encoding=UTF-8 ... --conf /Users/hbrien/Software/grails-2.3.1/conf/groovy-starter.conf --classpath run-app

501 661 640 0 9:40AM ttys000 1:50.24 /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java -Xmx1024M -Xms1024M -XX:MaxPermSize=256m -Dgrails.fork .active=true -Dgrails.build.execution.context=/private/var/folder -Djdk.reflect.allowGetCallerClass=true -Dspringloaded=profile=grails;cacheDir=/Users/hbrien/.grails/2.3.1 org.grails .plugins.tomcat.fork.ForkedTomcatServer

【问题讨论】:

  • 您是否尝试过使用 JAVA_OPTS 变量?喜欢JAVA_OPTS="-Xmx1024M -Xms1024M " grailsw run-app
  • 你在 BuildConfig 中试过grails.project.fork 吗?
  • 为了暂时解决这个问题,我刚刚从 BuildConfig.groovy 中删除了 //grails.project.fork = [。我知道有办法将这些变量传递给“分叉”进程,但我还没有弄清楚。

标签: grails jvm-arguments grails-2.3


【解决方案1】:

我在 Eclipse/GGTS 中调试时发现了类似的问题。在 BuildConfig 中运行没有任何 grails.project.fork 配置的项目不会 fork,但调试总是 fork Tomcat

我认为这是这个问题的副作用:http://jira.grails.org/browse/GRAILS-9836

奇怪的是这个问题被标记为未解决,但拉取请求被合并并且它在实际的代码库中。我想将一些属性传递给分叉的 Tomcat 进程,结果在BuildConfig.groovy 中得到了这个丑陋的代码:

if (!System.getProperty('grails.fork.active')) {

    def forkedJvmArgs = System.getProperties()
        .findAll { it.key.startsWith('PARAM') }
            .collect { new String("-D${it.key}=${it.value}") }

    println "Passing properties to forked process: $forkedJvmArgs"

    grails.project.fork = [run: [jvmArgs: forkedJvmArgs]]
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-02
    • 2018-04-03
    • 2015-06-30
    相关资源
    最近更新 更多