我希望能够使用javaagent运行Play Framework 2.0服务器。
网络上的一些资源(请参阅here和here)表明,只需将-javaagent:/path/to/agent.jar
附加到play run
即可完成此操作,但似乎无效为了我。
任何线索?
答案 0 :(得分:2)
我在Heroku中使用它,工作正常如下(在我的Procfile中):
play ${JAVA_OPTS} ${MYCONFIG} -javaagent:/newrelic/newrelic.jar run
我的 newrelic 文件夹位于root用户,与 app
相同答案 1 :(得分:2)
SBT的java命令行在“build.bat
批处理文件(Win)或”build
“shell脚本(U * X)中定义,位于%PLAY2_HOME%/framework
文件夹< / p>
您可以通过调整那里定义的参数来添加一个javagent或调整SBT / Play2使用的其他JVM设置。这可能是Heroku的聪明人已经做过的事情。
答案 2 :(得分: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 param:
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)。
答案 3 :(得分:1)
示例不起作用的原因是因为示例适用于Play 1.x,并且您正在使用play 2.x. Play 1.x使用Java(通过python脚本),其中Play 2使用SBT。
您需要配置SBT。我不是SBT专家,但是从Googling开始,我只想运行
play -javaagent:/path/to/agent.jar
然后在控制台启动之后跟run
应该执行操作,但如果这不起作用,那么就是找到如何将javaagent语法添加到SBT控制台的情况。< / p>