範例: SIP Servlet Proxy Servlet 類別
Proxy Servlet 類別
在起始 INVITE 之後,會在每一則後續的 SIP 訊息上呼叫這個應用程式。 對於每一個「要求」及「回應」,此類別只會印出動作及其目標或來源。
package com.example;
import java.io.IOException;
import javax.servlet.sip.*;
import java.servlet.ServletException;
public class ProxyServlet extends SipServlet {
public void doInvite(SipServletRequest req)
throws ServletException, java.io.IOException {
//get the Proxy
Proxy p=req.getProxy();
//turn on supervised mode so that all events come through us
//The default on this is true but it is set to emphasize the function.
p.setSupervised(true);
//set record route so we see the ACK, BYE, and OK
p.setRecordRoute(true);
//proxy on the request
p.proxyTo(req.getRequestURI());
}
public void doRequest(SipServletRequest req)
throws ServletException, java.io.IOException {
System.out.println(req.getMethod()+" Request from "+req.getFrom().getDisplayName());
super.doRequest(req);
}
public void doResponse(SipServletResponse resp)
throws ServletException, java.io.IOException {
System.out.println(resp.getReasonPhrase()+" Response from "+resp.getTo().getDisplayName());
super.doResponse(resp);
}
}
Proxy deployment descriptor
<sip-app>
<display-name>ProxyServlet</display-name>
<servlet>
<servlet-name>ProxyServlet</servlet-name>
<servlet-class>com.example.ProxyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ProxyServlet</servlet-name>
<pattern>
<equal>
<var>request.method</var>
<value>INVITE</value>
</equal>
</pattern>
</servlet-mapping>
</sip-app>