SIP-Servlets

Ein SIP-Servlet ist eine Java-basierte Anwendungskomponente, die von einem SIP-Servlet-Container verwaltet wird und SIP-Signale absetzt. SIP-Servlets interagieren mit Clients durch den Austausch von Anforderungs- und Antwortnachrichten über den Servlet-Container.

Die Spezifikation SIP Servlet 1.0 (JSR 116) ist über Java™ Specification Request (JSR) 116 standardisiert. Das Ziel dieser Spezifikation ist es, eine Java-API (Application Programming Interface, Anwendungsprogrammierschnittstelle) ähnlich den HTTP-Servlets bereitzustellen, die ein komfortables SIP-Programmiermodell bietet. Wie beim gängigen Programmiermodell für HTTP-Servlets ist die Flexibilität eingeschränkt, um Bedienungskomfort und Implementierungszeit zu optimieren.

Allerdings unterscheidet sich die SIP-Servlet-API in vieler Hinsicht von HTTP-Servlets, weil das Protokoll anders ist. Obwohl SIP ein Anforderungs-Antwort-Protokoll ist, gibt es nicht unbedingt nur eine Antwort auf eine Anforderung. Diese Komplexität und die Notwendigkeit, eine Lösung mit hoher Leistung bereitzustellen, bedeuteten, dass es einfacher war, SIP-Servlets von Anfang an asynchron zu machen. Anders als HTTP-Servlets, versuchte das Programmiermodell für SIP-Servlets außerdem sicherzustellen, dass Clientanforderungen neben der anderen Logik, die geschrieben wird, einfach erstellt werden können, weil viele Anwendungen als Client oder als Proxy für andere Server oder Proxys fungieren.

SipServlet-Anforderungen

Ähnlich wie HTTP-Servlets erweitert jedes SIP-Servlet eine Basisklasse mit dem Namen "javax.servlet.sip.SipServlet". Alle Nachrichten werden über die service-Methode empfangen, die erweitert werden kann. Weil es in SIP aber keine Eins-zu-eins-Zuordnung zwischen Anforderungen und Antworten gibt, wird empfohlen, stattdessen die Methode "doRequest" oder "doResponse" zu erweitern. Wenn die Methode "doRequest" oder "doResponse" erweitert wird, muss die erweiterte Methode aufgerufen werden, damit die Verarbeitung abgeschlossen werden kann.

Jede Anforderungsmethode, die von der Spezifikation unterstützt wird, verfügt wie HTTP über eine doxxx-Methode. In HTTP sind Methoden wie doGet und doPost für GET- und POST-Anforderungen verfügbar. In SIP sind die Methoden doInvite, doAck, doOptions, doBye, doCancel, doRegister, doSubscribe, doNotify, doMessage, doInfo und doPrack für jede SIP-Anforderungsmethode verfügbar.

Anders als ein HTTP-Servlet, verfügen SIP-Servlets über Methoden für alle unterstützten Antworttypen. Daher umfassen SIP-Servlets die Antworten doProvisionalResponse, doSuccessResponse, doRedirectResponse und doErrorResponse. Dies bedeutet im Einzelnen, dass die provisorischen Antworten (Antworten des Typs 1xx) den Status angeben, die Erfolgantworten (Antworten des Typs 2xx) die erfolgreiche Ausführung der Transaktion anzeigen, die Umleitungsantworten (Antworten des Typs 3xx) zum Umleiten des Clients an eine verschobene Ressource oder Entität verwendet werden und die Fehlerantworten (Antworten des Typs 4xx, 5xx und 6xx) eine Störung oder eine bestimmte Fehlerbedingung anzeigen. Diese Typen von Antwortnachrichten sind ähnlich wie HTTP, aber da das SIP-Servletprogrammiermodell ein Clientprogrammiermodell umfasst, müssen die Antworten auch über das Programm erfolgen.

Erläuterungen zu JSR 116

In JSR 289 wurden einige Erläuterungen zu JSR 116 vorgenommen, z. B.:
  • JSR 289, Abschnitt 4.1.3: Headerfeld für Kontakt
  • JSR 289, Abschnitt 5.2: Impliziter Transaktionsstatus
  • JSR 289, Abschnitt 5.8: Zugriffsmöglichkeit auf SIP-Servletnachrichten

Symbol, das den Typ des Artikels anzeigt. Konzeptartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=csip_servlet
Dateiname:csip_servlet.html