Tôi đang cố gắng hiểu URL dịch vụ JMX.Giải thích URL JMX
service:jmx:rmi://192.168.30.10:1234/jndi/rmi://192.168.30.10:2344/jmxrmi
Thật tuyệt vời nếu ai đó có thể giúp tôi hiểu điều này.
Cảm ơn
Tôi đang cố gắng hiểu URL dịch vụ JMX.Giải thích URL JMX
service:jmx:rmi://192.168.30.10:1234/jndi/rmi://192.168.30.10:2344/jmxrmi
Thật tuyệt vời nếu ai đó có thể giúp tôi hiểu điều này.
Cảm ơn
tôi sẽ sử dụng lại một câu trả lời tôi đã viết lên trước cho câu hỏi này: Cannot connect to Tomcat's MBeanServer via jconsole in Java6
Đó là chưa hoàn chỉnh , nhưng có thể trợ giúp:
Giả sử bạn có Máy chủ JMX (bí danh 'Đại lý JMX' bí danh 'JVM bạn muốn kết nối với') chạy trên 'MỤC TIÊU' với cổng đăng ký RMI tại 'RMI REGISTRY PORT' và cổng máy chủ JMX RMI tại 'JMX RMI SERVER PORT'.
Lưu ý:
jmxrmi
.URI sau đây sẽ dẫn đến kết nối thành công (thử nghiệm)
service:jmx:rmi://<TARGET_MACHINE>:<JMX_RMI_SERVER_PORT>/jndi/rmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi
này trông khó chịu. Hãy cắt nó ra.
URI này là RFC2609 "URL giao thức vị trí dịch vụ" RFC2609, đúng vậy, nó thực sự là một URI, phải không?)
Nó bao gồm:
service
- một hằng sốjmx:rmi
- loại dịch vụ gồm: loại trừu tượngjmx
và URL chương trìnhrmi
sap bị phân hủy thành:
//<TARGET_MACHINE>:<JMX_RMI_SERVER_PORT>
- ipsite/jndi/rmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi
- URL phầnMột đầy đủ thông tin JMX client kết nối đến "ipsite" để làm JMX -giao dịch trên RMI; nhưng những gì của khách hàng JMX không BIẾT cổng đó? Kiên nhẫn ...
URL phần bị phân hủy thành:
/jndi/
- Điều này dường như nói với khách hàng JMX rằng nó có thể nhận được thông tin tra cứu tại địa điểm đó saurmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi
- Đúng, chúng tôi nhận thông tin về Máy chủ RMI JMX tại sổ đăng ký RMI, dưới khóa tra cứu jmxrmi
Đây là phần nào trước khi có ngựa, như đã có o liên hệ với số đăng ký RMI do trước tiên là sau một phần của URL SLP.
Sau khi gãi đầu, trực giác, chúng ta hãy thử:
service:jmx:rmi://<TARGET_MACHINE>/jndi/rmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi
Vâng, đó là hiệu quả! Cổng máy chủ JMX RMI được lấy từ registry. Trên những suy nghĩ thứ hai, máy mục tiêu cũng nên được lấy từ registry, như sau:
service:jmx:rmi:///jndi/rmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi
Thậm chí tốt hơn, mà làm việc, quá!
Tài liệu tham khảo:
Theo javax.management.remote.rmi
url này được lắp ráp như thế này
service:jmx:rmi://ignoredhost/jndi/rmi://myhost/myname
tôi nghĩ rằng anh ấy đang hỏi tại sao nó lại quá phức tạp. – djangofan
Để giải thích:
service:jmx:rmi://192.168.30.10:1234/jndi/rmi://192.168.30.10:2344/jmxrmi
service:jmx:rmi://192.168.30.10:1234
- nói rằng có một chất độc da JMX trên máy với địa chỉ IP 192.168.30.10. Tác nhân JMX đang sử dụng (TCP) cổng 1234 để cung cấp dịch vụ JMX (s) trên RMI (về cơ bản hoạt động như một máy chủ RMI)./jndi/rmi://192.168.30.10:2344/jmxrmi
- nói rằng RMI stub tương tác với JMX Agent trên RMI có thể tìm thấy trong sổ đăng ký RMI đang chạy trên máy có địa chỉ IP 192.168.30.10 và đang sử dụng (TCP) cổng 2344. Để lấy RMI bạn cần phải tra cứu ràng buộc "jmxrmi".Câu trả lời trước cho rằng phần thứ 2 của URL là lấy cổng máy chủ của máy chủ RMI JMX. Đó là không đúng. Cổng máy chủ RMI JMX là (TCP) 1234 và là một phần của URL. Những gì bạn nhận được từ RMI registry là RMI stub (javax.management.remote.rmi.RMIServerImpl_Stub
) mà bạn có thể sử dụng để nói chuyện với JMX Agent (MBean Server) trên RMI.
Hy vọng điều này sẽ hữu ích.
Vì bạn đang nói rằng câu trả lời của @ david-tonhofer không chính xác, bạn có thể giải thích cách các URL không có IP thứ nhất: cổng cặp ('192.168.30.10: 1234' trong ví dụ này) không? tức là các URL bắt đầu bằng 'dịch vụ: jmx: rmi: /// jndi/rmi:'. Một phần của lý do điều này rất khó hiểu nói chung là khi chúng ta chỉ định một cổng jmx khi khởi động JVM, nó không tham chiếu đến RMI ở bất cứ đâu: '-Dcom.sun.management.jmxremote.port = 2344'. (Lưu ý rằng trong kinh nghiệm của tôi rằng cổng jmxremote được liên kết với phần "RMI Registry" của URL, không phải phần "Máy chủ RMI JMX"). –
Liên quan đến http://stackoverflow.com/questions/743343/cannot-connect-to-tomcats-mbeanserver-via-jconsole-in-java6 – Gray