【发布时间】:2012-06-13 10:03:05
【问题描述】:
我希望能够使用 javaagent 运行 Play Framework 2.0 服务器。
网络上的一些资源(请参阅 here 和 here )表明这可以通过将 -javaagent:/path/to/agent.jar 附加到 play run 来完成,但它似乎对我不起作用。
有什么线索吗?
【问题讨论】:
标签: playframework playframework-2.0 javaagents
我希望能够使用 javaagent 运行 Play Framework 2.0 服务器。
网络上的一些资源(请参阅 here 和 here )表明这可以通过将 -javaagent:/path/to/agent.jar 附加到 play run 来完成,但它似乎对我不起作用。
有什么线索吗?
【问题讨论】:
标签: playframework playframework-2.0 javaagents
在不修改脚本的情况下,无法将 -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)。
【讨论】:
我在 Heroku 中使用它,工作正常如下(在我的 Procfile 中):
play ${JAVA_OPTS} ${MYCONFIG} -javaagent:/newrelic/newrelic.jar run
我的 newrelic 文件夹位于根目录下,与 app
处于同一级别【讨论】:
SBT 的 java 命令行在位于 %PLAY2_HOME%/framework 文件夹中的“build.bat”批处理文件 (Win) 或“build”shell 脚本 (U*X) 中定义
您可以通过调整其中定义的参数来添加 javagent 或调整 SBT/Play2 使用的其他 JVM 设置。这可能是 Heroku 的聪明人已经做过的事情了。
【讨论】:
示例不起作用的原因是因为示例适用于 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 控制台。
【讨论】:
play -javaagent,然后是run,但没有运气。我同意解决方案可能在于将适当的参数传递给 SBT,但谷歌在这里没有帮助我:(