PlayFramework2.0サーバーをjavaagentで実行できるようにしたいと思います。
Web上のいくつかのリソース(こことここ-javaagent:/path/to/agent.jar
を参照)は、これをに追加するだけで実行できることを示唆していますがplay run
、私にはうまくいかないようです。
手がかりはありますか?
私はHerokuでそれを使用しており、次のように正常に動作しています(私のProcfileで):
play ${JAVA_OPTS} ${MYCONFIG} -javaagent:/newrelic/newrelic.jar run
私のnewrelicフォルダーはルート上にあり、アプリと同じレベルです
スクリプトを変更せずに -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)。
SBT の Java コマンド ラインは、フォルダにある " build.bat
" バッチ ファイル (Win) または " build
" シェル スクリプト (U*X)で定義されています。%PLAY2_HOME%/framework
そこで定義されたパラメータを調整することで、javagent を追加したり、SBT/Play2 で使用される他の JVM 設定を微調整したりできます。これはおそらく、Heroku の賢い人々がすでに行ったことです。
例が機能しない理由は、例がPlay 1.x用であり、play2.xを使用しているためです。Play 1.xは(Pythonスクリプトを介して)Javaを使用しますが、Play2はSBTを使用します。
SBTを構成する必要があります。私はSBTの専門家ではありませんが、グーグルからは単に走っていると思っていたでしょう
play -javaagent:/path/to/agent.jar
その後run
、コンソールが起動したらトリックを実行する必要がありますが、それが機能しない場合は、javaagent構文をSBTコンソールに追加する方法を見つける場合です。