5

我希望能够使用 javaagent 运行 Play Framework 2.0 服务器。

网络上的一些资源(请参阅此处此处)表明这可以通过附加-javaagent:/path/to/agent.jar来完成,play run但它似乎对我不起作用。

有什么线索吗?

4

4 回答 4

2

我在 Heroku 中使用它,工作正常如下(在我的 Procfile 中):

  play ${JAVA_OPTS} ${MYCONFIG} -javaagent:/newrelic/newrelic.jar run

我的newrelic文件夹位于根目录下,与app处于同一级别

于 2012-06-13T13:02:08.853 回答
2

SBT 的 java 命令行在文件夹中的“ ”build.bat批处理文件 (Win) 或“ build” shell 脚本 (U*X) 中定义%PLAY2_HOME%/framework

您可以通过调整那里定义的参数来添加 javagent 或调整 SBT/Play2 使用的其他 JVM 设置。这可能是 Heroku 的聪明人已经做过的事情。

于 2012-08-03T07:25:26.983 回答
2

在不修改脚本的情况下,没有干净的方法可以将 -javaagent 参数传递给使用 play 2.0.1-2.0.4 的 java 命令调用。

我能够使用以下技术使 javaagent 工作:

# Modify the play/framework/build script to include an extra environment variable
sed -i 's/^java\( \${PLAY_OPTS}\)\?/java ${PLAY_OPTS}/' ${playPath}/framework/build

然后可以像这样传递 -javaagent 参数:

export PLAY_OPTS='-javaagent:/lib/newrelic/newrelic.jar'

${playPath}/play -Dconfig.file=conf/prod.conf -Dlogger.file=conf/prod-logger.xml start


更新

一个不幸的旁注——我刚刚从 New-Relic 支持中发现,New-Relic 现在绝对不支持 play-framework 2.x (2012-10-04)。


于 2012-10-04T20:32:37.733 回答
1

示例不起作用的原因是因为示例适用于 Play 1.x,而您使用的是 play 2.x。Play 1.x 使用 Java(通过 python 脚本),而 Play 2 使用 SBT。

您需要配置 SBT。我不是 SBT 专家,但从谷歌搜索,我会认为只是运行

play -javaagent:/path/to/agent.jar

然后run一旦控制台启动就可以解决问题,但如果这不起作用,那么就是找出如何将 javaagent 语法添加到 SBT 控制台的情况。

于 2012-06-13T11:23:26.840 回答