Session Initiation Protocol (SIP) in Liberty verwalten

Sie können SIP in Liberty konfigurieren, indem Sie Elemente in der Datei server.xml hinzufügen und konfigurieren.

Vorbereitende Schritte

Installieren Sie das Feature sipServlet-1.1 auf Ihrem Liberty-Server. Weitere Informationen finden Sie im Artikel Liberty-Features hinzufügen und entfernen.

Informationen zu diesem Vorgang

In dieser Aufgabe ist die manuelle Konfiguration von SIP für Liberty in der Datei server.xml beschrieben. Sie können SIP alternativ auch mit den Entwicklertools konfigurieren, die automatisch alle Konfigurationen in der Datei server.xml aktivieren. Weitere Informationen finden Sie unter WebSphere Developer Tools > Entwickeln > SIP-Anwendungen entwickeln.

Vorgehensweise

  1. Konfigurieren Sie den SIP-Container in der Datei server.xml, indem Sie ein sipContainer-Element hinzufügen.
    <sipContainer invalidateSessionOnShutdown="true" msgArrivalTimeAttr="true" markInternalResponse="true"></sipContainer>
  2. Konfigurieren Sie den SIP-Stack, indem Sie ein sipStack-Element hinzufügen. Sie können das Verhalten konfigurieren, wie z. B. automatische Antworten, Nachrichteninformationen und Wiederverwendung von Verbindungen.
    <sipStack hideMessageBody="true" hideMessageReqUri="true"
        auto100OnInvite="false" auto482OnMergedRequests="true"
        forceConnectionReuse="false" acceptNonUtf8Bytes="true"
        pathMtu="1600" compactHeaders="API">
        <commaSeparatedHeaders>Comma separated headers</commaSeparatedHeaders>
        <hideMessageHeaders>iup</hideMessageHeaders>
        <sipQuotedParameters>Require</sipQuotedParameters>
    </sipStack>
    SIP-Zeitgeber sind ein Mechanismus für den Sitzungsverfall. Sie können Werte für die IP-Zeitgeber festlegen, die sich von den in RFC 3261 angegebenen Standardwerten unterscheiden, indem Sie die Zeitgeberattribute (timer) im Element sipStack angeben.
    <sipStack timerT1="500" timerT2="4000" timerT4="5000" timerA="500" timerB="32000" timerD="32000"
    timerE="500" timerF="32000" timerG="500" timerH="32000" timerI="5000" timerJ="32000" timerK="5000"></sipStack>
  3. Konfigurieren Sie den SIP-Anwendungsrouter, in dem Sie ein sipApplicationRouter-Element hinzufügen. Wenn Sie einen SIP-Anwendungsrouter konfigurieren, können Sie den Standardanwendungsrouter (Default Application Router, DAR) verwenden oder einen angepassten Anwendungsrouter erstellen. Die DAR-Komponente verwendet eine Konfigurationstextdatei, die als Java™-Eigenschaftendatei aufgebaut ist, um die Reihenfolge zu definieren, in der SIP-Anforderungen vom Anwendungsrouter an Anwendungen gesendet werden.

    Wenn Sie keinen Anwendungsrouter konfigurieren und Ihre Anwendungen manuell implementieren, werden Anwendungen in der Reihenfolge ausgelöst, in der sie implementiert wurden. Wenn Sie mehrere Anwendungen über die Datei server.xml implementieren, können Sie keine Anwendungsreihenfolge definieren.

    • Geben Sie die Position der DAR-Eigenschaftendatei (.properties) im Attribut sipDarConfiguration des Elements sipApplicationRouter an, um die DAR-Komponente mit einer DAR-Konfigurationsdatei zu verwenden.
      <sipApplicationRouter sipDarConfiguration="Pfad_zum_DAR.properties"></sipApplicationRouter>
    • Wenn Sie einen angepassten Anwendungsrouter verwenden möchten, konfigurieren Sie den Router in der Datei server.xml:
      1. Fügen Sie der Datei server.xml das Feature bells-1.0 hinzu.
        <featureManager>
             <feature>bells-1.0</feature>
        </featureManager>
        Weitere Informationen finden Sie in der Dokumentation zu bells-1.0.
      2. Fügen Sie in der Datei server.xml die JAR-Datei für Ihren angepassten Anwendungsrouter als gemeinsam genutzte Bibliothek hinzu und fügen Sie die bell-Konfiguration für den Service javax.servlet.sip.ar.spi.SipApplicationRouterProvider hinzu.
        <library id="carLib" name="carLib" description="Custom App Router Library">
             <file name="pathToJar.jar"></file>
        </library>
        <bell libraryRef="carLib">
        	<service>javax.servlet.sip.ar.spi.SipApplicationRouterProvider</service>
        </bell>
        Weitere Informationen zu gemeinsam genutzten Bibliotheken finden Sie unter Gemeinsam genutzte Bibliotheken
      3. Setzen Sie im Element sipApplicationRouter das Attribut carProvider auf den vollständigen Namen der Providerklasse für den angepassten Anwendungsrouter.
        <sipApplicationRouter carProvider="example.example"></sipApplicationRouter>
    Sie können den Fehlerantwortcode angeben, den der SIP-Container sendet, wenn einer eingehenden ursprünglichen Anforderung kein aktives Servlet zugeordnet werden kann, indem Sie das Attribut sipNoRouteErrorCode dem Element sipApplicationRouter hinzufügen.
    <sipApplicationRouter carProvider="example.example" sipNoRouteErrorCode="403"></sipApplicationRouter>
  4. Konfigurieren Sie die SIP-Endpunkte, indem Sie ein sipEndpoint-Element hinzufügen. Sie können angepasste Ports, Hosts und das Bindungsverhalten konfigurieren. Jeder SIP-Endpunkt, den Sie konfigurieren, überschreibt den Standardendpunkt.
    <sipEndpoint host="localhost" sipTCPPort="5060" bindRetries="60" bindRetriesDelay="5000"></sipEndpoint>
    Anmerkung: Transport Layer Security (TLS) ist standardmäßig inaktiviert. Wenn Sie TLS für Ihren SIP-Container aktivieren möchten, aktivieren und konfigurieren Sie die SSL-Kommunikation für Ihren Liberty-Server. Weitere Informationen finden Sie im Artikel SSL-Kommunikation in Liberty aktivieren.
  5. Konfigurieren Sie die SIP-Leistung, indem Sie ein sipTasksDispatcher-Element hinzufügen. Sie können die Anzahl der SIP-Tasks, die gleichzeitig ausgeführt werden können, konfigurieren. Eine SIP-Anwendungstask ist eine Folge von Anwendungscode, der seriell im SIP-Container in einem Einzelthread ausgeführt wird. Die Anwendungsimplementierung einer Methode vom Typ SipServlet.doInvite() oder einer Methode vom Typ SipTimerListener.timeout() wird beispielsweise jeweils als einzelne Task betrachtet, wenn der Anwendungscode, der über diese Methoden aufgerufen wird, seriell in einem vom Container bereitgestellten, verwalteten Liberty-Thread ausgeführt wird. Die tatsächliche maximale Anzahl gleichzeitig ausgeführter SIP-Tasks wird durch die maximale Anzahl verwalteter Liberty-Threads beschränkt.
    <sipContainer>
         <sipTasksDispatcher concurrentContainerTasks="15"/>
    </sipContainer>
  6. Wenn Sie SIP-URIs mit DNS-NAPTR-Datensätzen (Domain Name System, Naming Authority Pointer) auflösten möchten, konfigurieren Sie einen Domänenresolver.
    1. Fügen Sie ein domainResolver-Element hinzu und konfigurieren Sie es. Wenn Sie dieses Element konfigurieren, werden SIP-URIs über DNS in die IP-Adresse, den Port und das Transportprotokoll des nächsten zu kontaktierenden Hops aufgelöst.
      Anmerkung: SIP unterstützt nicht die Verwendung von DNS-Prozeduren für einen Server, die einem Server das Senden einer Antwort an einen Sicherungsclient ermöglichen, wenn der primäre Client ausfällt.
      <domainResolver dnsAutoResolve="true">
           <dnsServers>dns.server.com</dnsServers>
      </domainResolver>
    2. Konfigurieren Sie Ihren DNS-Server so, dass er den SIP-Container verwendet. Das folgende Beispiel zeigt eine BIND-Datenbankdatei für die Konfiguration der Unterstützung für RFC 3263 in einem DNS-Server.
      ; Copyright (C) 2004  Internet Systems Consortium, Inc. ("ISC")
      ; Copyright (C) 2001  Internet Software Consortium.
      ;
      ; Permission to use, copy, modify, and distribute this software for any
      ; purpose with or without fee is hereby granted, provided that the above
      ; copyright notice and this permission notice appear in all copies.
      ;
      ; THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
      ; REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
      ; AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
      ; INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
      ; LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
      ; OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
      ; PERFORMANCE OF THIS SOFTWARE.
      
      ; $Id: include.db,v 1.2.206.1 2004/03/06 10:22:13 marka Exp $
      
      ; Test $INCLUDE current domain name and origin semantics
      
      example.com. 43200 IN SOA ns.example.com. email.example.com. ( 2003032001 10800 3600 604800 86400 )
      ;
      example.com.             43200 IN NS      ns.example.com.
      ;
      ns.example.com.          43200 IN A       10.0.0.20
      sipserver1.example.com.  43200 IN A       10.0.0.21
      sipserver2.example.com.  43200 IN A       10.0.0.22
      sipserver3.example.com.  43200 IN A       10.0.0.23
      ;
      router.example.com.        43200  IN CNAME sipserver3
      ;
      sipserver1.example.com.  43200 IN AAAA    fec0:0:0:0:0:0:0:abcd
      sipserver2.example.com.  43200 IN AAAA    fec0:0:0:0:0:0:0:abba
      ;
      _sip._udp.example.com.   43200 IN SRV 2 0 5060  sipserver1.example.com.
      _sip._udp.example.com.   43200 IN SRV 2 0 5060  sipserver2.example.com.
      _sip._tcp.example.com.   43200 IN SRV 1 4 5060  sipserver1.example.com.
      _sip._tcp.example.com.   43200 IN SRV 1 2 5060  sipserver2.example.com.
      _sips._tcp.example.com.  43200 IN SRV 0 1 5061  sipserver1.example.com.
      _sips._tcp.example.com.  43200 IN SRV 0 0 5061  sipserver2.example.com.
      ;
      example.com. 43200 IN NAPTR 0 0 "s" "SIPS+D2T" "" _sips._tcp.example.com.
      example.com. 43200 IN NAPTR 1 0 "s" "SIP+D2T"  "" _sip._tcp.example.com.
      example.com. 43200 IN NAPTR 2 0 "s" "SIP+D2U"  "" _sip._udp.example.com.

Symbol das den Typ des Artikels anzeigt. Taskartikel

Dateiname: twlp_sip_adm.html