Exemple : classe de servlets proxy de servlets SIP
Classe de servlets proxy
Après l'INVITE initiale, cette application sera appelée sur tous les messages SIP suivants. Pour chaque requête et chaque réponse, cette classe imprimera simplement l'action et la personne dont elle provient ou à qui elle est destinée.
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>