Hosting mit mehreren Netzen konfigurieren
Der SIP-Container kann vom SIP-Proxy eine Liste abgehender Schnittstellen akzeptieren und diese dann für jede SIP-Anwendung verfügbar machen.
Vorbereitende Schritte
Informationen zu diesem Vorgang
Das Multihoming erlaubt die Kommunikation einer Anwendung mit verschiedenen Benutzeragentenclients und Benutzeragentenservern in unterschiedlichen Netzen.
Die Anwendung fragt den SIP-Container ab, um mit den von JSR 289 definierten Standardverfahren die Liste verfügbarer abgehender Schnittstellen zu erhalten. Zu diesem Zweck wird ein Kontextattribut verwendet, das vom Container (über den Protokollaustausch mit allen verfügbaren SIP-Proxys) verwaltet wird. Es handelt sich um javax.servlet.sip.SipServlet.OUTBOUND_INTERFACES, das als javax.servlet.sip.outboundInterfaces definiert ist. Dieses Attribut enthält alle verfügbaren Schnittstellen. Der Code im Beispielabschnitt veranschaulicht den Zugriff auf das Attribut von der Anwendung aus.
Führen Sie nach dem Konfigurieren der Schnittstellen für jeden SIP-Proxy die folgenden Schritte aus, um das Routing abgehender Nachrichten zu steuern. Falls Sie mehr als einen Proxy verwenden, müssen alle Proxys identisch konfiguriert sein.
Wenn eine Anwendung für das Senden abgehender Anforderungen keine Schnittstelle angibt, verwendet der Proxy die Standardschnittstellen. Sie sollten die Standardschnittstellen für jedes Protokoll definieren. Weitere Informationen finden Sie in Schritt 5.
Der Administrator kann bei Bedarf drei angepasste Eigenschaften für den SIP-Proxy festlegen, die den Kettennamen definieren, über den bestimmt wird, welche Schnittstelle verwendet werden soll, wenn die SIP-Anwendung nicht die Methode setOutboundInterface aufruft. Falls diese angepassten Eigenschaften nicht definiert sind und die Methode setOutboundInterface nicht verwendet wird, kann die für abgehende abgehende Anforderungen zu verwendende Schnittstelle nicht definitiv bestimmt werden.
Die folgende Vorgehensweise bezieht sich auf eine Topologie mit einem für das Hosting mit mehreren Netzen und mit mehr als einer Netzschnittstelle konfigurierten Proxy.
Vorgehensweise
Ergebnisse
Beispiel
....
import javax.servlet.sip.SipServlet;
import javax.servlet.sip.SipSession;
....
protected void doInvite(SipServletRequest req1) throws ServletException, IOException
{
...
// Dieser Codeblock legt die Einstellungen der abgehenden Schnittstelle fest.
SipSession sipSession = req1.getSession();
javax.servlet.ServletContext context = getServletContext();
java.util.List list = (java.util.List)context.getAttribute(javax.servlet.sip.SipServlet.
OUTBOUND_INTERFACES);
SipURI uri = getProtocolInterface ("udp", list);
if (uri != null)
{
InetSocketAddress inetSocketAddr = new InetSocketAddress(uri.getHost(), uri.getPort());
sipSession .setOutboundInterface(inetSocketAddr);
}
...
}
// Diese Methode wählt einfach die erste Schnittstelle in der Liste für das angegebene Protokoll aus.
private SipURI getProtocolInterface(String transport, List outboundInterfaceList)
{
SipURI uri = null;
Iterator iterator = outboundInterfaceList.iterator();
while (iterator.hasNext()) {
SipURI tempUri = (SipURI)iterator.next();
if (tempUri.getTransportParam().equals(transport) == true)
{
uri = tempUri;
break;
}
}
return (uri);
}