Pergunta sobre playframework, playframework-2.0, javaagents – É possível executar o servidor do Play Framework 2.0 com um javaagent?

5

Eu gostaria de poder executar o servidor Play Framework 2.0 com um javaagent.

Alguns recursos na Web (consulteAqui eAqui ) sugerem que isso poderia ser feito simplesmente anexando-javaagent:/path/to/agent.jar paraplay run mas isso não parece funcionar para mim.

Alguma pista?

Sua resposta

4   a resposta
2

Eu estou usando em Heroku, funcionando bem como segue (no meu Procfile):

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

Minhasnewrelic pasta está na raiz, mesmo nívelaplicativo

@TahirAkhtar sim, jogar 2.0.1 Pere Villega
@PereVillega heroku provavelmente está usando um script de execução customizado, já que o original passará -javaagent como um parâmetro de aplicativo, em vez de como um parâmetro da JVM. De qualquer forma, fico feliz em saber que o agente da New Relic está trabalhando com o Play 2.0. :-) marcospereira
Você está usando o Play 2.x? Tahir Akhtar
2

Não há uma maneira limpa de passar o parâmetro -javaagent para a chamada do comando java com a reprodução 2.0.1-2.0.4 sem modificar um script.

Consegui obter um javaagent funcionando usando a seguinte técnica:

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

Então é possível passar o parâmetro -javaagent assim:

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

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

Atualizar

Uma nota infeliz - eu acabei de descobrir pelo apoio da New-Relic que a New-Relic definitivamente não suporta o play-framework 2.x agora (2012-10-04).


1

A razão pela qual os exemplos não funcionam, é porque os exemplos são para o Play 1.xe você está usando o jogo 2.x. O Play 1.x usa o Java (via scripts python) onde o Play 2 usa o SBT.

Você precisa configurar o SBT. Eu não sou um especialista em SBT, mas do Google, eu teria pensado simplesmente executando

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

e depois seguido porrun uma vez que o console tenha começado, deve ser feito, mas se isso não funcionar, então é um caso de descobrir como adicionar a sintaxe javaagent ao console do SBT.

Eu já tenteiplay -javaagent Seguido porrun no console sem sorte. Eu concordo que a solução provavelmente está em passar um parâmetro apropriado para o SBT, mas o google não está me ajudando aqui :( Tahir Akhtar
2

A linha de comando java para o SBT é definida no "build.bat"arquivo de lote (Win) ou"build"script de shell (U * X) localizado no%PLAY2_HOME%/framework pasta

Você pode adicionar um javagent ou ajustar outras configurações da JVM usadas pelo SBT / Play2 ajustando os parâmetros definidos lá. Isso é provavelmente o que as pessoas inteligentes do Heroku já fizeram.

Perguntas relacionadas