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.
Auf der Grafik unten werden einige Details zu der internen Architektur präsentiert.
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: