2012-07-08 137 views
2

我正在嘗試使用jvisualvm來點擊Play框架應用程序。爲什麼jvisualvm看不到我的Play Framework應用程序?

環境:Windows 7中位,Java 7的64位。

步驟

1)增加至-Dcom.sun.management.jmxremote_JAVA_OPTIONS enviornment變量。

Play Output

拿起_JAVA_OPTIONS:-Xms800m -Xmx1500m -XX:PermSize =64米 -XX:MaxPermSize參數=256米-Dcom.sun.manageme nt.jmxremote

2)冉jvisual vm(來自C:\Program Files\java\jdk1.7.0_03\bin)。

3)我沒有在本地進程列表中看到Play進程。

我錯過了什麼?

+0

您可能會看到Play正在運行的JVM,而不是Play本身。找出哪個PID與Play關聯,看看是否有幫助。 – duffymo 2012-07-08 13:29:17

+1

在你提供的輸出中你可以看到:'pid是8244' - 你確定列表中沒有這樣的進程嗎? – 2012-07-08 13:31:36

+0

@TomaszNurkiewicz - 我確定。 – ripper234 2012-07-08 14:55:03

回答

4

我的環境

  • 開發PC:Windows 8中,在的VisualVM JDK1.6
  • 服務器:Ubuntu的,JDK1.6,玩1.2.2

用於連接到本地播放應用,唯一的選擇「-Dcom.sun.management.jmxremote」是好的。

但是,對於連接到遠程Play應用程序,JVM需要更多選項。

由於集_JAVA_OPTIONS環境會影響到所有的Java程序,我改打首發腳本:框架/平陽黴素/播放/ 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的重新連接。

相關問題