Follow Us on Twitter

Monitoring en beheer met JMX en MBeans

Juni 2005 - In de tweede helft van 2005 gaat OC4J 10.1.3 in productie. Daarmee wordt OC4J volledig J2EE 1.4 gecertificeerd. Eén van de mooiste nieuwe features is de implementatie van J2EE management-services met JMX en MBeans. In dit Whitebook halen we onze kennis van de Java Management Extension op en kijken wat OC4J er mee doet.

JMX: Wat is het en wat kan het?

JMX staat voor Java Management Extensions. Het is een specificatie voor het gestandaardiseerd managen en monitoren van systemen, applicaties en netwerken. JMX is ontstaan in het Java Community Proces, waarin alle geïnteresseerde Java partijen meepraten en beslissen over de beste oplossing. Ook Oracle heeft hier een rol in gespeeld.

Met JMX kan je met name een systeem monitoren op kritieke gebeurtenissen, performance problemen, fouten etc. Daarnaast kun je een applicatie tijdens het gebruik configureren als bepaalde applicatie parameters daar aanleiding toe geven. Zo kun je bijvoorbeeld het loggingsnivo on the fly aanpassen als zich problemen in de applicatie voordoen.

JMX wordt verder tegenwoordig gebruikt om de Java Virtual Machine te monitoren en te managen, b.v. op performance issues en de J2EE 1.4 servers zijn verplicht een aantal voorgedefinieerde management functies met JMX te implementeren.

Als je JMX services hebt ontwikkeld wil je die ook kunnen gebruiken en liefst op elke plek die je maar wilt. Daarom is naast de JMX specificatie (JSR 3) ook een JMX Remote API (JSR 160) ontwikkelt die definieert hoe een beheerdersapplicatie of een andere cliëntapplicatie met JMX systemen kunnen communiceren. De javax.management API’s zijn voor het eerst opgenomen in J2EE 1.4 en maken nu standaard deel uit van J2SE 5.0.

JMX Architectuur

De belangrijkste componenten van JMX zijn MBeans en de JMX-Agent. De MBeans zijn Java klassen die het management en monitoring werk uitvoeren. De JMX Agent zorgt dat anderen de MBeans kunnen gebruiken (zie Figuur 1).

Figuur 1, JMX-Architectuur

MBeans

Een MBean is een combinatie van een gewone java klasse en een MBean interface die door de Java klasse geïmplementeerd wordt. De MBean interface publiceert alle attributen en operaties die op een resource (systeem, netwerk of applicatie) met de MBean benaderd of uitgevoerd kunnen worden. MBeans kunnen door de JMX-Agent, door een MBean of door een applicatie geinstantieerd en geregistreerd worden.

Onderstaande code geeft een voorbeeld van een MBean. De verplichte naamgeving is in de vorm van “MijnKlasse” en “MijnKlasseMBean”.

package com.example.mbeans; 
public interface HelloMBean { 
   // Operation 
   public void sayHello(); 
   // Operation 
   public int add(int x, int y); 
   // Attribuut 
   public String getName(); 
}

package com.example.mbeans; 
public class Hello implements HelloMBean { 
   private final String name = "Pippi"; 
   public void sayHello() { 
      System.out.println("hello world"); 
   } 
   public int add(int x, int y) { 
      return x + y; 
   } 
   public String getName() { 
      return this.name; 
   } 
} 

JMX-Agent

De JMX-Agent bestaat uit een MBean-server, een aantal MBean management services en één of meerder adapters of connectoren voor de communicatie met JMX clients.

MBean Server

De MBean-server registreert de MBeans, geeft er een naam aan en zorgt dat ze door clients gevonden en gebruikt kunnen worden. Het aardige is dat je deze MBeans niet alleen statisch kunt registeren maar ook dynamisch, tijdens de loop van het programma aan kunt melden en gebruiken.

MBean management services

De MBean management services voegen een aantal mogelijkheden toe die JMX nog veel interessanter maken. Zo is er een event notificatie systeem waarmee je kunt reageren op bepaalde gebeurtenissen in je applicatie. De MBeans kunnen deze notificaties aanmaken en registreren bij de server. Hiervoor moet de MBean de interface NotificationBroadcaster implementeren. Verder is er standaard een Timer geïmplementeerd waarmee je acties op de systemen kunt inplannen.

Adapters/Connectors

De adapters en connectors geven remote management applicaties toegang tot de MBeans met behulp van de Remote API. Hiermee kunnen de MBeans geregistreerd, geïnstantieerd en uitgevoerd worden en notificaties gevraagd en ontvangen worden.
Adapters en connectors zijn specifiek voor een protocol. Adapters worden vaak gebruikt voor legacy systemen en zijn een applicatie specifieke wrapper rond de JMX services. Connecters bestaan uit een cliënt en een server gedeelte en hebben onafhankelijk van het gebruikte protocol dezelfde interface. Standaard moet een JMX-Agent een RMI connector meeleveren.

De Remote API maakt het verder mogelijk voor een cliënt applicatie gebruik te maken van discovery en lookup services zoals JNDI, JINI en SLP. Deze services maken echter geen deel uit van de JMX specificatie.

OC4J en JMX

OC4J 10.1.3 is zoals gezegd J2EE 1.4 gecertificeerd. Het implementeert een JMX 1.2 server (de JMX-Agent) en de JMX Remote API Specification 1.0.

Verder voldoet het aan de J2EE Management Specificatie (JSR77) die een standaard set van managed objects definieert voor de J2EE container. Hiermee kan de server zelf gemanaged worden, b.v. een applicatie toevoegen of informatie over de server toestand opvragen.

In OC4J 10.1.3 kan daarnaast voor het eerst gebruik gemaakt worden van de Enterprise Management Application Server Control. Deze applicatie wordt samen met OC4J opgestart en biedt een web interface voor het configureren en managen van de container.

In de console wordt o.a. een overzicht van alle systeem en applicatie MBeans gegeven mbv de System en Application MBean Browsers. Hiermee kunnen voor zover de MBean het toelaat ook MBean operaties uitgevoerd worden. Daarnaast kun je een overzicht van alle geregistreerde notificaties op vragen. Het managen is dus een stuk makkelijker geworden.

Conclusie

Oracle biedt met OC4J 10.1.3. alle mogelijkheden om efficiënt gebruik te maken van JMX voor applicatie en systeem management. Daarnaast kan nu ook de server zelf eenvoudig met JMX gemanaged worden. De JMX specificatie maakt het verder mogelijk zeer flexibel te reageren op veranderingen in een systeem door het gebruik van notificatie events, de timers en de dynamische MBean registratie.

Referenties

 

Over de auteur
Arianne van den Berg is Oracle/Java consultant en heeft ruim 10 jaar ervaring in de IT. Ze heeft zich vanuit een Oracle developer achtergrond ontwikkeld richting Java technologie en is de afgelopen twee jaar werkzaam in J2EE ontwikkelprojecten.

Waardering:
 

Reacties

Nieuwe reactie inzenden

De inhoud van dit veld is privé en zal niet openbaar worden gemaakt.

Meer informatie over formaatmogelijkheden

CAPTCHA
Deze vraag is om te testen of u een persoon bent en om spam te voorkomen
Image CAPTCHA
Enter the characters shown in the image.