B2B-Anwendungen (Back-to-Back) entwickeln

Sie können zum Entwickeln einer B2BUA-Anwendung (Back-To-Back User Agent) die Schnittstelle javax.servlet.sip.B2buaHelper verwenden.

Vorbereitende Schritte

Lesen Sie Abschnitt 12 der Spezifikation JSR289. Er enthält ausführliche Informationen zu den B2BUA-Operationen. Die SIP Servlet 1.1-Spezifikation definiert eine Helper-Klasse (javax.servlet.sip.B2buaHelper) für die Erstellung von B2BUA-Anwendungen. Weitere Informationen finden Sie in der Dokumentation zu den B2buaHelper-Methoden.

Informationen zu diesem Vorgang

B2BUA ist eine SIP-Anwendung (Session Initiation Protocol), die als Vermittler bei einem SIP-Ruf fungiert und Anforderungen und Antworten zwischen mindestens zwei SIP-Dialogen weiterleitet. Eine typische B2BUA-Anwendung verwaltet SIP-Sitzungen zwischen zwei Benutzeragenten. Die B2BUA-Anwendung kann aber auch komplexere Szenarien abwickeln, in denen Antworten verschiedener Zweige der nachgeschalteten Verzweigung verwaltet werden müssen. Zur nachgeschalteten Verzweigung kommt es, wenn die Anforderung in unterschiedliche Zweige aufgeteilt wird und die Nachricht vom Benutzeragentenclient an den Benutzeragentenserver weitergeleitet wird. Die Klasse B2buaHelper enthält alle erforderlichen Methoden für die Erstellung solcher B2BUA-Anwendungen. Das Verhalten der Klasse B2buaHelper und die Regeln, die zum Erstellen neuer Anforderungen verwendet werden, sind im Abschnitt 12.2 der Spezifikation JSR289 definiert. Sie können die Funktionen der Klasse B2buaHelper zum Verknüpfen zweier Dialoge (den Dialog des eingehenden Rufs und den Dialog des abgehenden Rufs) des SIP-B2B-Benutzeragentenrufs verwenden.

Vorgehensweise

  1. Rufen Sie die Instanz B2buaHelper ab, indem Sie die Methode SipServletRequest.getB2buaHelper() aufrufen.
  2. Nachdem Sie diese Instanz abgerufen haben, können Sie eine neue SIP-Anforderung erstellen, indem Sie B2buaHelper.createRequest() aufrufen.
    private void doInvite(SipServletRequest req) {
    	B2buaHelper b2buaHelper = req.getB2buaHelper();
    	SipServletRequest newRequest = b2buaHelper.createRequest(req, true, headerMap);
    }

    Die neue Anforderung (newRequest), die erstellt wird, entspricht der SIP-Servletanforderung (SipServletRequest req), die als ursprüngliche Anforderung mit dem ersten Parameter dieser Methode angegeben wurde. Der boolesche Parameter gibt an, ob die ursprüngliche Anforderung req und die neue Anforderung (newRequest) verknüpft sind. Die headerMap stellt eine Map von Nicht-Systemheadern bereit, die in der neuen Anforderung (newRequest) überschrieben werden sollen.

  3. Vergewissern Sie sich, dass die beiden Dialoge verknüpft sind. Wenn Sie die Methode createRequest mit dem Attribut false aufgerufen haben, können Sie die SIP-Sitzungen explizit verknüpfen, indem Sie die folgende Methode aufrufen:
    B2buaHelper.linkSipSessions(session1, session2)
  4. Nachdem die SIP-Sitzungen und SIP-Anforderungen verknüpft wurden, können Sie die verknüpfte Sitzung abrufen, indem Sie die folgende Methode aufrufen:
    SipSession linkedSession = B2buaHelper.getLinkedSession(req.getSession());
    Anmerkung: Im B2BUA-Verzweigungsszenario erstellt die Anwendung mehrere SIP-Anforderungen, und daher werden nicht alle SIP-Sitzungen verknüpft. Sie müssen sie explizit verknüpfen.
  5. Nachdem Sie eine Antwort vom Benutzeragentenserver erhalten haben, erstellen Sie eine Antwort für diesen Dialog. Überprüfen Sie, ob eine verknüpfte Sitzung für die Antwort vorhanden ist. Ist dies der Fall, verwenden Sie die verknüpfte Anforderung, um eine Antwort an den Benutzeragentenclient zu erstellen.
    SipServletRequest linked = b2bHelper.getLinkedSipServletRequest(resp.getRequest()); 
    linked.createResponse(resp.getStatus(),resp.getReasonPhrase()).send(); 

    Ist der Antwort keine verknüpfte Sitzung zugeordnet, muss die Anwendung B2buaHelper.createResponseToOriginalRequest aufrufen und eine neue abgeleitete Sitzung erstellen, bei der es sich um eine Kopie der SIP-Sitzung (SipSession) handelt, die der ursprünglichen Anforderung zugeordnet ist.

    Anmerkung: Der Abschnitt 12.5 der Spezifikation JSR289 enthält Informationen zum Erstellen mehrerer erfolgreicher Antworten auf die ursprüngliche Anforderung. Sind der ursprünglichen Nachricht INVITE mehrere SIP-Sitzungen (SipSession) zugeordnet und müssen mehrere erfolgreiche Antworten auf die Nachricht INVITE gesendet werden, verwenden Sie die Methode B2buaHelper.createResponseToOriginalRequest.
  6. Wenn Sie die Methode createResponseToOriginalRequest verwenden, vergewissern Sie sich, dass die beiden Dialoge verknüpft sind. Ihre Anwendung muss die neue abgeleitete Sitzung mit der zugehörigen Sitzung verknüpfen, damit die verknüpfte Sitzung abgerufen werden kann und nachfolgende Antworten für diese gesendet werden können.

Symbol das den Typ des Artikels anzeigt. Taskartikel

Dateiname: twlp_sip_dev_b2b.html