Cette section explique comment se connecter à un serveur Java™ Platform,
Enterprise Edition (Java EE), et comment gérer plusieurs serveurs de différentes marques.
Avant de commencer
Le produit implémente totalement la
spécification de gestion Java également nommée JSR-77 (Java
Specification Requests 77). Toutefois, vous devez bien comprendre certaines divergences entre la spécification Java
et l'implémentation de
WebSphere
Application Server
au moment de développer un programme client
d'administration Java pour gérer plusieurs serveurs de
différentes marques. Pour plus d'informations, voir la
spécification de gestion Java Platform, Enterprise
Edition (Java EE) et la documentation sur les API (Application Programming Interface) Java
MBean.
Dans le centre de documentation, cliquez sur .
Pourquoi et quand exécuter cette tâche
i votre programme client d'administration accède exclusivement à des serveurs WebSphere
Application Server, vous pouvez utiliser
les API Java et les MBeans définis par WebSphere
Application Server. Si votre programme doit accéder à la fois à des serveurs WebSphere
Application Server et à d'autres serveurs Java, utilisez l'API définie dans la spécification de gestion Java EE.
Procédure
- Connectez-vous à un serveur Java.
Connectez-vous
à un serveur en recherchant le bean enterprise de gestion dans
l'interface JNDI (Java Naming and Directory Interface). Ce bean
offre une interface distante au serveur MBean qui s'exécute dans le
serveur d'applications. Le bean enterprise de gestion fonctionne
quasiment comme le client d'administration
WebSphere
Application Server, sauf qu'il n'offre pas les fonctions spécifiques à
WebSphere
Application Server. L'exemple suivant montre comment rechercher le bean
enterprise de gestion.
import javax.management.j2ee.ManagementHome;
import javax.management.j2ee.Management;
Properties props = new Properties();
props.setProperty(Context.PROVIDER_URL, "iiop://myhost:2809");
Context ic = new InitialContext(props);
Object obj = ic.lookup("ejb/mgmt/MEJB");
ManagementHome mejbHome = (ManagementHome)
PortableRemoteObject.narrow(obj, ManagementHome.class);
Management mejb = mejbHome.create();
L'exemple obtient un contexte initial pour un
serveur d'applications en transmettant l'hôte et le port du
connecteur RMI (Remote Method Invocation).
Vous devez coder explicitement le port RMI
(dans le cas présent, 2809). La méthode de recherche porte sur le
chemin
ejb/mgmt/MEJB, à savoir l'emplacement de
l'interface home du bean enterprise de gestion. L'exemple crée
ensuite le bean session sans état mejb que vous emploierez à l'étape
suivante.
- Gestion de plusieurs serveurs d'applications de marques différentes.
Après
avoir créé le bean de session sans état mejb, vous pouvez l'utiliser pour gérer vos
serveurs d'applications. Les composants des serveurs d'applications apparaissent sous
forme de MBeans, lesquels sont définis par la spécification. Tous ces MBeans ont la
propriété j2eeType.
Cette propriété est l'un des ensembles de types définis par la
spécification. Tous ces types sont dotés d'un ensemble d'attributs exposés.
Utilisez l'exemple suivant pour apprendre à gérer plusieurs
serveurs d'applications de différentes marques. L'exemple utilise le
MBean JVM (machine virtuelle Java) pour déterminer la taille actuelle
du tas pour le serveur d'applications.
ObjectName jvmQuery = new ObjectName("*:j2eeType=JVM,*");
Set s = mejb.queryNames(jvmQuery, null);
ObjectName jvmMBean = (ObjectName) s.iterator().next();
boolean hasStats = ((Boolean) mejb.getAttribute(jvmMBean,
"statisticsProvider")).booleanValue();
if (hasStats) {
JVMStats stats = (JVMStats) mejb.getAttribute(jvmMBean,
"stats");
String[] statisticNames = stats.getStatisticNames();
if (Arrays.asList(statisticNames).contains("heapSize")) {
System.out.println("Heap size: " + stats.getHeapSize());
}
}
La méthode queryNames() interroge d'abord le MBean JVM. La
méthode getAttribute obtient l'attribut statisticsProvider et
détermine si ce MBean fournit des statistiques. Si tel est le cas, l'exemple accède à l'attribut stats et
appelle la méthode getHeapSize() pour connaître la taille du tas.
Résultats
L'atout majeur de cet exemple est qu'il peut s'exécuter sur
n'importe quel serveur d'applications. Il montre qu'un MBean peut
éventuellement implémenter des interfaces définies, dans le cas présent l'interface
StatisticsProvider. Dès lors qu'un MBean implémente l'interface StatisticsProvider, vous pouvez
déterminer si un serveur d'applications fournit une donnée
statistique particulière, en l'occurrence la taille du tas (heapSize). La spécification définit la
taille de pile, même si cette valeur est facultative. Si le serveur d'applications rend compte de cette statistique, vous pouvez afficher la taille
du tas de la JVM.