Клиенту JMX требуется интерфейс MBean

Я новичок в технологии JMX, и если я правильно понимаю: есть 2 способа вызвать операцию на Mbeans:

1) ЧТОБЫ использовать операцию вызова MBeanServerConnection и указать имя метода в виде строки, используя mbsc.invoke(name, operationName, params, signature)

2) Получите интерфейс MBean с помощью JMX.newMBeanProxy(connection, objectName, interfaceClass) и вызовите операции на интерфейсе.

Мой вопрос заключается в том, что если я хочу использовать второй подход, упомянутый выше, нужно ли мне также иметь интерфейс Mbean в моем клиенте? Интерфейс Mbean является частью исходного кода моего основного приложения, за которым нужно следить. Нужно ли копировать тот же интерфейс Mbean в клиентский код?


person Umar Farman Ali    schedule 13.10.2015    source источник
comment
Да нужно. Он передается в качестве третьего параметра в метод interfaceClass.   -  person SubOptimal    schedule 13.10.2015
comment
Но как лучше всего сделать мой клиент независимым от агента (приложение для мониторинга)? Должен ли я хранить свои интерфейсы Mbean в отдельном файле jar и позволить клиенту и агенту импортировать этот файл jar?   -  person Umar Farman Ali    schedule 14.10.2015


Ответы (1)


Для меня нет best practice, так как решение зависит от ваших потребностей.

Найдите ниже мои личные мнения.

mbsc.invoke(name, operationName, params, signature)

Если клиентское приложение строго не зависит от приложения, в котором выполняется MBean, клиентское приложение не должно зависеть от интерфейса. Возьмем в качестве примера утилиту jconsole. Он может вызывать все открытые операции без необходимости доступа к классу интерфейса mbean.

JMX.newMBeanProxy(connection, objectName, interfaceClass)

Если клиентское приложение сильно зависит от приложения, в котором выполняется MBean (например, вы предоставляете приложению mbean, а клиентское приложение является вашим инструментом поддержки), я бы выбрал это решение, поскольку вы получаете преимущество времени компиляции. чеки.

person SubOptimal    schedule 21.10.2015
comment
Спасибо, теперь мне ясно, что есть два способа реализовать клиент. Во-первых, он должен быть независимым от приложения, а во-вторых, клиент зависит от интерфейсов приложения mbean. - person Umar Farman Ali; 22.10.2015