2013-09-28 38 views
7

在以前版本的Java Play框架中,我们可以提供一个命令行argent来加载监视代理。例如,可以NewRelic的加载作为Java Play 2.2不支持javaagent

./path/to/start -javaagent:/path/to/newrelic.jar 

随着2.2的发布,播放团队显著改变了启动脚本。从我可以说,它不再支持javaagents。有没有其他人获得NewRelic与Java Play 2.2+一起运行?如果您无法在生产环境中对其进行监控,播放效果非常好,但无用的技术......

回答

12

看来你可以前缀Java选项-J(类似于使用-D系统属性的方式):

$ bin/<app> -J-javaagent:lib/newrelic.jar 

发现了这个,而在脚本本身戳,但是应该注意的在使用摘要中:

$ bin/<app> -h 
Usage: [options]  
... 
    -J-X    pass option -X directly to the java runtime 
        (-J is stripped) 
... 
+0

虽然这似乎“工作”,我没有得到任何数据... – penfold

+0

伟大的发现! -J参数导致NewRelic代理加载。由于某些原因NewRelic日志表明它正在发送数据,但NewRelic的Web UI并未更新。一旦我听到他们的支持团队的消息,我会报告回来。 – Chris

+0

我似乎现在正在获取数据。具有讽刺意味的是,我认为这个集合失败了。 – penfold

1

使用Play Framework 2.2中的新本机打包程序,您需要在JAVA_OPTS环境变量中设置Java选项。

+0

嗨詹姆斯 - 伟大的建议。当我尝试这样做时,它使用-D标志对系统属性起作用,但对于-J java选项不起作用。当我将JAVA_OPTS导出设置为“-J-javaagent:/path/to/newrelic.jar -Dnewrelic.bootstrap_classpath = true”时,javaagent未启动。 – Chris

+0

无赖。我会调查为什么这不起作用。它似乎应该。 –

+1

我只是设置我的JAVA_OPTS =“ - J-javaagent:路径/ java.newrelic-agent-3.0.1.jar”,它的工作。 (使用play2.2,新遗物,heroku) – codaR0y

0

在Play Framework 2.2版中,应用程序启动脚本更改为不同的目录。要加载javaagent库,有必要指定其完整路径。

例如,如果Heroku的-javaagent-1.4.jar是在项目的的lib目录

heroku config:set JAVA_OPTS="-Xmx384m -Xss512k -XX:+UseCompressedOops -XX:+PrintGCDetails -XX:+PrintHeapAtGC -XX:+PrintGCDateStamps -javaagent:/app/lib/heroku-javaagent-1.4.jar=stdout=true,lxmem=true" 
0

这适用于PlayFramework 2.3.x版本 我复制代理JAR +阳明配置文件到PLAY_APP_ROOT/lib

sbt start -J-javaagent:lib/newrelic.jar