2

I'm trying to use jvisualvm to peer into a Play Framework app.

Environment: Windows 7 bit, Java 7 64 bit.

Step:

1) Added -Dcom.sun.management.jmxremote to _JAVA_OPTIONS enviornment variable.

Play Output

Picked up _JAVA_OPTIONS: -Xms800m -Xmx1500m -XX:PermSize=64m -XX:MaxPermSize=256m -Dcom.sun.manageme nt.jmxremote

2) Ran jvisual vm (from C:\Program Files\java\jdk1.7.0_03\bin).

3) I am not seeing the Play process among the list of local processes.

What am I missing?

ripper234
  • 222,824
  • 274
  • 634
  • 905

2 Answers2

4

My environment

  • Developer PC: Windows 8, VisualVM in JDK1.6
  • Server: Ubuntu, JDK1.6, play 1.2.2

For connecting to local Play app, the only option "-Dcom.sun.management.jmxremote" is OK.

But for connecting to remote Play app, more options are needed for JVM.

Since set _JAVA_OPTIONS environment will affect all Java programs, I changed play starting script: 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

Then restart Play app, and reconnect it from VisualVM.

tthsn
  • 263
  • 2
  • 9
4

There was a bug that prevented processes from showing up in jvisualvm (or jps) if they specified a java.io.tmpdir. See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7009828.

Also, setting com.sun.management.jmxremote hasn't been necessary since Java 6 (at least not to connect to a process on the same machine). See http://docs.oracle.com/javase/6/docs/technotes/guides/management/agent.html.

ejain
  • 3,456
  • 2
  • 34
  • 52