S.mon-Architektur

Überblick

Die untere Grafik gibt eine grobe Übersicht über die System-Architektur von S.mon an.

Architecture (Picture1)

S.mon ist eine Java-Applikation. Es ist ein sog. Servlet. Diese Applikation läuft in dem Servlet-Container des Web-Servers. Die Kommunikation zwischen dem Web-Server und S.mon erfolgt über das Servlet-API.

Alle Daten werden von S.mon in einem RDBM-System (Relational Database Management System) gespeichert. Der Zugriff auf die Datenbank erfolgt über das Java Database Connectivity API (JDBC).

Auf der Client-Seite wird keine extra Software benötigt. Man arbeitet mit einem normalen Web-Browser. Zur Kommunikation zwischen dem Browser und dem Web-Server (und schließlich S.mon) dient der Standard HyperText Transfer Protocol (HTTP) bzw. das HTTP über das Secure Socket Layer (HTTPS).

S.mon bietet eine Web-Services-Schnittstelle an. Diese Schnittstelle ist in einer WSDL-Datei (Web Services Description Language) beschrieben. Zur Kommunikation wird hier das Simple Object Access Protocol (SOAP) verwendet. SOAP ist ein XML-Protokoll welches sich des HTTP für die Datenübertragung bedient.
Die angebotene Schnittstelle kann von externen Programmen zur Kommunikation mit S.mon benutzt werden.

Für die S.mon-Applikation wurde ein Mail-Gateway entwickelt. Dieses Mail-Gateway ist ein minimaler SMTP-Daemon (Simple Mail Transfer Protocol), welcher die eingehenden E-Mails in Problem-Meldungen umwandelt bzw. als Information (Mail-Austausch) zu einer Problem-Meldung mitspeichert.
Dieses Mail-Gateway verwendet die oben beschriebene SOAP-Schnittstelle. Zusätzlich wird hier direkt mit der Datenbank kommuniziert, um zu prüfen, ob gewisse Produkte oder Probleme im S.mon vorhanden sind. Die Kommunikation mit der Datenbank wird hier jedoch wegfallen, sobald die SOAP-Schnittstelle erweitert wird (nächste Version).

Die Mail-Clients können dazu verwendet werden, um neue Probleme im S.mon zu melden, bzw. um eine bestimmte E-Mail zu einem Problem zu speichern (siehe oben). Diese Mails werden normal verfaßt und an den gewünschten Empfänger geschickt. Jede Mail kommt dann über das Simple Mail Transfer Protocol (SMTP) zu dem Mail-Gateway an, wo sie dann weiter verarbeitet wird.

Servlet-Details

Auf der Grafik unten werden einige Details zu der internen Architektur präsentiert.

Architecture (Picture 2)

Für die Abarbeitung von HTTP-Anfragen wird im S.mon-Servlet ein sog. Command-Pattern verwendet. Mit jeder Anfrage (definiert durch URL) ist ein Kommando assoziert. Die Details zu diesem Pattern sind in der Software-Dokumentation angegeben. Die wichtigste Aufgabe, die ein Command zu erledigen hat, wird durch die Methode process erledigt:

public InputStream process(HttpServletRequest request) throws IOException, ServletException;
Bei dem Aufruf der Methode werden die gewünschten Aktionen ausgeführt und am Ende die Daten (in den meisten Fällen XML-Streams) retourniert (InputStream). Diese Daten werden von dem S.mon-Servlet zum Browser weitergeleitet. Der Servlet erkennt das auszuführende Kommando anhand der angegebenen URL. Der Servlet erzeugt dann eine neue Instanz der gewünschten Command-Klasse und initialisiert diese Instanz (Details sind hier absichtlich weggelasen worden).

Hier sind die Schritte kurz erläutert:

  1. Bei der Ausführung der gewünschten Aktion werden die Datenbank-Objekte verwendet. Diese Objekte retournieren die Daten aus der Datenbank. Bei einer Aktion können mehrere unterschiedliche DB-Objekte involviert sein.
  2. Ein DB-Objekt erzeugt keine neue DB-Verbindung bei jeder Abfrage, sondern greift auf die Datenbank über ein Connection-Pool zu.
  3. Für jedes DB-Objekt erzeugt das Command-Objekt ein zugehöriges XML-Objekt, welches für die XML-Ausgabe der Daten verantwortlich ist.
  4. Wurde die Aktion erfolgreich ausgeführt, so liefert das Command-Objekt das Ergebnis in Form von einem InputStream. Mit der Ausnahme von Attachments wird immer XML-Stream erzeugt. Bei der Erzeugung von XML-Stream bedient sich das Command-Objekt der XML-Objekte. Diese XML-Objekte wissen, welche XML-Daten, wie zu formatieren sind.
  5. Diese Schritt wird nur dann ausgewührt, wenn die XML-Daten ins HTML-Format konvertiert werden sollen. Wurde mit einem Command eine XSL-Datei assoziert, dann führt das S.mon-Servlet XSL-Transformation durch. Die XML-Daten kommen als Input für den Transformer.
  6. XSL-Tranformer liest die konfigurierte XSL-Datei, die für die Transformation zu verwenden ist.
  7. XSL-Transformer produziert HTML-Output aus den XML-Daten und der XSL-Datei. Dieser HTML-Output wird von dem Servlet an den Browser weitergeleitet.

Literatur und Links