какой метод выбрать для связи jmx - PullRequest
1 голос
/ 22 сентября 2011

Я занимаюсь разработкой java-приложения для управления мониторингом с использованием jmx api. Я видел примеры в Интернете и могу выполнять удаленные вызовы от клиентского приложения к серверу. Мой вопрос, который лучше всего подойдет для настройки параметров удаленного взаимодействия? Метод (ы) между клиентом и сервером. Например, я могу использовать некоторый объект коллекции, такой как hashtable, и снова включить хеш-карту в качестве ответа. Другой подход может генерировать строку на стороне клиента и анализировать ее на стороне сервера. Другой подход может быть генерация различных сериализуемых объектов на обеих сторонах и передача их xml-репрезентаций может быть (я бы не стал пробовать это, поэтому не уверен насчет его технической возможности). Какой подход (рассмотрим сигнатуры методов ниже) будет наилучшим и адаптируемым для разных пар ввода / вывода.

1) Метод HashmapCollection (Hashmap);
2) String methodRawString (String); 3) Метод StringObjectToXML (String inputObjectXML);

Ответы [ 3 ]

2 голосов
/ 22 сентября 2011

С JMX есть функции MXBean, которые очень интересны: вы можете иметь довольно сложные объекты на сервере, не развертывая JAR на стороне клиента. Здесь есть хорошая статья: http://java.sun.com/developer/technicalArticles/J2SE/mxbeans/.

Кроме того, существует http://www.jolokia.org/, который является мостом JMX / HTTP, который обеспечивает доступ REST / JSON к вашим компонентам JMX. Очень полезно, если клиентская сторона не является приложением Java (например, сценарий оболочки).

2 голосов
/ 22 сентября 2011

Jolokia имеет сложный способ сериализации объектов в обоих направлениях.В нисходящем направлении (от сервера к клиенту) каждый объект может быть сериализован в объект JSON.Для восходящего потока (от клиента к серверу для объектов, используемых в качестве аргументов метода или значений в операциях записи), сериализация немного более ограничена, однако карты и коллекции списков могут быть легко использованы, когда тип элементов является базовым (строки,номер, логическое, другие карты или списки).Итак, Jolokia весьма хорош для удаленного взаимодействия с JMX.

Еще одним решением было бы ограничить себя OpenType s, которые доступны с обеих сторон без дополнительной информации о типе.С OpenType вы также можете легко моделировать коллекции (TabularData).Для перевода из произвольного Java-объекта в OpenType структура MXBean действительно очень полезна (хотя перевод с карты приводит к довольно сложному формату TabularData).

2 голосов
/ 22 сентября 2011

Это зависит от вашей задачи. Теоретически настраиваемые сериализуемые классы (объекты-значения) подходят лучше и проще. Но в этом случае вы должны быть уверены, что у вас есть абсолютно одинаковые версии этих классов с обеих сторон (клиент и сервер).

Если вы не можете гарантировать это, и ваша модель данных относительно проста, то есть может быть представлена ​​в виде примитивов и коллекций (или карт) примитивов, используйте карты и коллекции.

Форматированные строки (XML, JSON и т. Д.) Являются наиболее переносимыми и сложными. Вы должны генерировать и анализировать XML, обрабатывать разные версии вашего формата и т. Д. Но вы никогда не получите исключение сериализации и теоретически сможете поддерживать кросс-версии сопоставимости.

...