Liberty : Exemples d'enregistrement de beans géré
Une application peut enregistrer ses propres instances de bean géré dans Liberty. Ces instances de bean géré peuvent ensuite être utilisées par d'autres applications ou des administrateurs externes.
Toute application peut enregistrer un bean géré par le biais d'une instance MBeanServer. Supposez qu'une application contient une classe
nommée org.example.Example qui implémente l'interface org.example.ExampleMBean, laquelle définit des attributs et des
opérations. Comme dans l'exemple suivant, l'application peut simplement instancier la classe
Example, puis l'enregistrer en utilisant un élément ObjectName unique. Si l'élément ObjectName choisi est déjà utilisé, une exception javax.management.InstanceAlreadyExistsException est émise.
import java.lang.management.ManagementFactory;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import org.example.Example;
...
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
Object mbean = new Example();
ObjectName name = new ObjectName("org.example.MyApplication:name=Example");
mbs.registerMBean(mbean, name);
De plus, une application peut enregistrer un bean géré qui étend java.lang.ClassLoader et permet d'accéder à plusieurs classes d'implémentation de bean géré. Vous pouvez ensuite utiliser tout autre client JMX, local ou distant, pour créer et enregistrer des beans gérés fournis par l'application. Par exemple, supposez que
l'application comporte une classe de bean géré nommée org.example.ApplicationClassLoader qui effectue les tâches suivantes :
- Implémente une interface vide org.example.ApplicationClassLoaderMBean
- Etend java.lang.Classloader et
- Fournit l'accès à la classe d'implémentation de bean géré org.example.Example
L'application peut enregistrer une instance de ApplicationClassLoader pour rendre disponible le bean géré Example pour les autres clients JMX comme suit :
import java.lang.management.ManagementFactory;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import org.example.ApplicationClassLoader;
...
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
Object classLoader = new ApplicationClassLoader();
ObjectName name = new ObjectName("org.example.MyApplication:name=ClassLoader");
mbs.registerMBean(classLoader, name);
Tout client JMX peut créer une instance Example.
L'exemple suivant suppose que la variable mbs est une instance MBeanServer ou MBeanServerConnection. Voir Utilisation de beans gérés JMX sous Liberty.
import javax.management.ObjectName;
...
ObjectName loaderName = new ObjectName("org.example.MyApplication:name=ClassLoader");
ObjectName exampleName = new ObjectName("org.example.MyApplication:name=Example");
mbs.createMBean("org.example.Example", exampleName, loaderName);
If necessary, you can use other forms of the MBeanServer.createMBean method to create the MBean by using non-default constructors.
Pour plus d'informations sur l'interface de gestion, voir le document de l'API Java pour Liberty. La documentation d'API Java de chaque API Liberty est disponible dans un fichier .zip séparé des sous-répertoires javadoc du répertoire ${wlp.install.dir}/dev.