//

Kummulieren von Informationen zu Mule-Applikationen per JMX

19.9.2013 | 3 Minuten Lesezeit

In meinem letzten Post habe ich erklärt, wie man per JMX Maven-Build-Informationen von Mule Applikationen veröffentlichen kann. Wenn man nun mehrere solcher Applikationen installiert hat, die alle diese Informationen bereitstellen, könnte man dies nutzen um eine Informationsseite zu erstellen, die diese Informationen kummuliert darstellt.

Die Erstellung dieser Mule Applikation soll in diesem Tutorial gezeigt werden.

Um die Informationen per JMX aus den anbietenden Mule Applikationen auf einer HTML-Seite zusammenzustellen bedarf es eines HTTP-Endpoints, der den HTTP-Request des Browsers entgegen nimmt und eines Transformers, der die Aufbereitung des HTMLs vornimmt. Beispielhaft möchte ich das im Folgenden zeigen.

Mule Flow-Konfiguration

Für die Beantwortung des Browser-Requests ist folgender Flow in der Mule Applikation einzurichten:

1<flow name="info">
2    <http:inbound-endpoint address="http://localhost:55555/info"
3        contentType="text/html" exchange-pattern="request-response">
4    </http:inbound-endpoint>
5    <custom-transformer class="de.codecentric.foo.InfoHTMLTransformer" />
6</flow>
7

Verantwortlich für das Auslesen und Zusammenstellen der Informationen der Applikations-MBeans als HTML ist der definierte InfoHTMLTransformer, der nun im folgenden detailierter dargestellt wird.

HTML Message-Transformer

Im Mule wird für die Darstellung der Informationen in HTML ein MessageTransformer implementiert, der den MBeanServer nach InfoMBeans durchsucht und an diesen dann die per JMX exportieren Attribute Name und Version ausliest. Das HTML kann natürlich verschönert werden und ggf. per Template-Maschine (z.B. freemarker ) konstruiert werden. Es geht mir hier nur um das generelle Vorgehen zum Auslesen der MBean-Attribute.

1package de.codecentric.foo;
2 
3import javax.management.MBeanServer;
4import javax.management.ObjectName;
5 
6import org.mule.api.MuleMessage;
7import org.mule.api.transformer.TransformerException;
8import org.mule.transformer.AbstractMessageTransformer;
9import org.springframework.jmx.support.JmxUtils;
10 
11public class InfoHTMLTransformer extends AbstractMessageTransformer {
12 
13    @Override
14    public Object transformMessage(MuleMessage message, String outputEncoding)
15            throws TransformerException {
16        MBeanServer mBeanServer = JmxUtils.locateMBeanServer();
17        String apps = "";
18        for (String domain : mBeanServer.getDomains()) {
19            try {
20                if (domain.startsWith("Mule.")) {
21                    String name = (String) mBeanServer.getAttribute(
22                            new ObjectName(domain + ":name=InfoMBean"), "Name");
23                    String version = (String) mBeanServer.getAttribute(
24                            new ObjectName(domain + ":name=InfoMBean"), "Version");
25                    apps += "<tr><td>" + name + "</td><td>" + version + "</td>";
26                }
27            } catch (Exception e) {
28                // behandle Exception !!!
29            }
30        }
31        return "<html><body><table>" + apps + "</table></body></html>";
32    }
33}
34

Wichtig hierbei ist natürlich, dass die MBeans so implementiert sind, wie ich im meinem vorangegangenen Post beschrieben hatte, ansonsten können die Attribute nicht gefunden werden und wir landen ständig im catch-Block.

Ergebnis

Wenn man diese Mule Applikation nun installiert und aufruft, so wird folgendes angezeigt:

Es ist also kein Hexenwerk, Daten von JMX-Beans auszulesen und in eine Mule Applikation einzubetten.

Weitere Teile dieser Artikelserie

  1. Was ist ein ESB und wofür kann man ihn nutzen?
  2. Tutorial “Enterprise Service Bus mit Mule ESB”: Hello World/Bus
  3. Tutorial “Enterprise Service Bus mit Mule ESB”: MuleMessage und Java-Komponenten
  4. Tutorial „Enterprise Service Bus mit Mule ESB“: Nachrichten mit Java transformieren
  5. Tutorial „Enterprise Service Bus mit Mule ESB“: Integration von CICS Programmen
  6. Tutorial “Enterprise Service Bus mit Mule ESB”: Transport, Connector, Endpoint: Ein paar Grundlagen…
  7. Tutorial “Enterprise Service Bus mit Mule ESB”: Performance und Threads
  8. Tutorial “Enterprise Service Bus mit Mule ESB”: Steuerung und Kontrolle per JMX
  9. Veröffentlichen von Informationen zu Mule Applikationen im Maven-Umfeld
  10. Tutorial “Enterprise Service Bus mit Mule ESB”: Exceptions und Email
  11. Veröffentlichen von Informationen zu Mule Applikationen im Maven-Umfeld

Beitrag teilen

Gefällt mir

0

//

Weitere Artikel in diesem Themenbereich

Entdecke spannende weiterführende Themen und lass dich von der codecentric Welt inspirieren.

//

Gemeinsam bessere Projekte umsetzen

Wir helfen Deinem Unternehmen

Du stehst vor einer großen IT-Herausforderung? Wir sorgen für eine maßgeschneiderte Unterstützung. Informiere dich jetzt.

Hilf uns, noch besser zu werden.

Wir sind immer auf der Suche nach neuen Talenten. Auch für dich ist die passende Stelle dabei.