После того как я посетил Groovy / Grails Experience в феврале этого года, я понял, что шаблон сборки Groovy можно использовать для фасада многих других API (не только Swing). Итак, я решил создать еще одного компоновщика для JMX API, и вот оно!
http://code.google.com/p/groovy-jmx-builder/
Jmx Builder — это DSL, разработанный для работы с API Java Management Extension (JMX). Jmx Builder использует шаблон компоновщика для облегчения захвата и предоставления компонентов для контроля и управления во время выполнения с помощью сервера MBean. Groovy JMX Builder DSL скрывает сложность работы с JMX API , предоставляя набор естественных конструкций для украшения ваших компонентов. управление через JMX.
Характеристики
- Возможность выставить для управления любой экземпляр класса, включая классы Java и Groovy.
- Не нужно реализовывать определенный интерфейс управления .
- Защитите разработчика от сложности JMX API
- Использует знакомый шаблон Groovy Builder
- Выставляет атрибут, конструкторы, операции, параметры
пример
В следующем примере показано, как можно использовать Groovy JMX Builder для предоставления обычного класса Java для управления на MBean Server.
Предположим, у вас есть класс Java , представляющий службу приветствия, и вы хотите предоставить его для управления :
public class Greeter {
private String name;
private String language = "en";
// ... code omitted
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// ... code omitted
public String greet(){
String greet = (String) (langs.containsKey(getLanguage()) ?
langs.get(getLanguage()) : langs.get("en"));
return greet + " " + getName();
}
String greet(String person){
return langs.get(language) + " " + person
}
}
Теперь, чтобы представить экземпляр как компонент управления с помощью JmxBuilder ()
def greeter = new Greeter()
JmxBuilder jmx = new JmxBuilder()
def server = jmx.export(svr){
bean(greeter){
name("greeterDemo:service=greeting")
desc("This service prints a greeting on console")
attribute(name:"name", desc:"name of person to greet", writable:true)
attribute(name:"language", desc:"the language to use", editable:true)
operation(name:"greet", desc:"Sends greeting to user")
operation(name:"greet", desc:"Send greeting to user"){
parameter(type:"java.lang.String", name:"Person", desc:"The person to send greeting to")
}
}
bean(object:greeter, name:"greeterDemo:service=greeting2")
}
Использование JmxBuilder
Приведенный выше код демонстрирует два способа предоставления вашего компонента для управления. Первые из них является явным образом , когда все управляемые членами экземпляра компонента объявляется для управления.
- Узел export () является верхним внешним узлом и принимает в качестве параметра необязательный экземпляр сервера MBean.
- Фасоли () принимает экземпляр объекта подвергаясь в качестве параметра
- В этом контексте сборщик требует правильное имя JMX
- Каждая строка указывает либо атрибут, конструктор и операцию
- И конструктор, и операция поддерживают узлы параметров для описания параметров метода.
Второй способ — просто объявить бин с
bean(object:greeter, name:"greeterDemo:service=greeting2")
JmxBuilder () автоматически предоставляет все открытые члены bean-компонента для управления.
JConsole
Как только компонент представлен, вы можете увидеть, как информация, полученная с помощью JmxBuilder (), представлена в MBeanServer с помощью клиента JMX, такого как JConsole.
Скачать JmxBuilder
Итак, посетите веб-сайт проекта и загрузите двоичный файл по адресу http://code.google.com/p/groovy-jmx-builder/ . Сообщайте обо всех ошибках или проблемах на сайте проекта на вкладке « Проблемы ».
Еще не все…