私の環境
- 開発者用 PC: Windows 8、JDK1.6 の VisualVM
- サーバー: Ubuntu、JDK1.6、play 1.2.2
ローカルの Play アプリに接続する場合は、「-Dcom.sun.management.jmxremote」オプションのみで OK です。
ただし、リモート Play アプリに接続するには、JVM にさらにオプションが必要です。
set _JAVA_OPTIONS環境はすべての Java プログラムに影響するため、play 開始スクリプトを変更しました: framework/pym/play/application.py
def java_cmd(self, java_args, cp_args=None, className='play.server.Server', args = None):
...
java_args.append('-Dcom.sun.management.jmxremote')
java_args.append('-Dcom.sun.management.jmxremote.port=5678')
java_args.append('-Dcom.sun.management.jmxremote.ssl=false')
java_args.append('-Dcom.sun.management.jmxremote.authenticate=false')
java_args.append('-Dcom.sun.management.jmxremote.local.only=false')
java_args.append('-Djava.rmi.server.hostname=192.168.0.10')
java_cmd = [self.java_path(), '-javaagent:%s' % self.agent_path()] + java_args + ['-classpath', cp_args, '-Dapplication.path=%s' % self.path, '-Dplay.id=%s' % self.play_env["id"], className] + args
return java_cmd
その後、Play アプリを再起動し、VisualVM から再接続します。