2012-04-26 10 views
33

Tôi đang chạy một ứng dụng Java trên Java 6 VM trên một Windows XP từ xa, trên đó tôi có thể chạy jvisualvm.exe để kết nối với ứng dụng đang chạy một cách tự động.Cách tìm số cổng JMX mặc định?

Bây giờ tôi cần kết nối ứng dụng đó từ máy tính cục bộ của mình, nhưng tôi không biết số cổng JMX của máy tính từ xa. Tôi có thể tìm thấy nó ở đâu? Hoặc, tôi phải khởi động lại ứng dụng đó với một số tham số VM để xác định số cổng?

Sau khi đọc câu hỏi How to find the JMX port in a server, tôi thực thi lệnh trên máy tính từ xa

netstat -apn 

nhưng có gì.

+0

có thể trùng lặp của [Làm thế nào để kích hoạt JMX trên JVM của tôi để truy cập với jconsole?] (Http://stackoverflow.com/questions/856881/how-to-activate-jmx-on-my-jvm-for-access -with-jconsole) – artbristol

Trả lời

44

Theo mặc định JMX không công bố trên một cổng, trừ khi bạn chỉ định đối số từ trang này: How to activate JMX...

-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=9010 
-Dcom.sun.management.jmxremote.local.only=false 
-Dcom.sun.management.jmxremote.authenticate=false 

Nếu bạn đang chạy bạn sẽ có thể truy cập vào bất kỳ của những thuộc tính hệ thống để xem họ có được thiết lập:

if (System.getProperty("com.sun.management.jmxremote") == null) { 
    System.out.println("JMX remote is disabled"); 
} else [ 
    String portString = System.getProperty("com.sun.management.jmxremote.port"); 
    if (portString != null) { 
     System.out.println("JMX running on port " 
      + Integer.parseInt(portString)); 
    } 
} 

là một sang một bên, tôi SimpleJMX package cho phép bạn xác định cả các JMX serverRMI port hoặc thiết lập cả hai vào cổng tương tự. Cổng trên được xác định với com.sun.management.jmxremote.port thực sự là cổng RMI. Điều này cho khách hàng biết cổng máy chủ JMX đang chạy.

+4

Bạn đã bỏ lỡ '-Dcom.sun.management.jmxremote.ssl = false' và' -Djava.rmi.server.hostname = ' – Claudio

+0

Không yêu cầu nào trong số đó được yêu cầu @Claudio tối thiểu là Java 7. – Gray

+2

Không có trong kinh nghiệm của tôi. Tôi đang chạy Java 7 trên Linux CentOS 6. Tôi tìm thấy câu trả lời của bạn và nó không hoạt động. May mắn thay, bạn cũng cung cấp liên kết đến câu trả lời gốc và thêm những lá cờ đó bắt đầu làm việc. Bạn có ý tưởng cái nào thực sự cần thiết và tại sao. – Claudio