Как написать SIP сервер на java? Есть код, но как этот сервер запустить я так и не понял
import java.io.IOException;
import java.util.HashMap;
import javax.servlet.*;
import javax.servlet.sip.*;
public class EchoServlet extends SipServlet {
protected HashMap _addresses = new HashMap();
protected void doInvite(SipServletRequest req) throws IOException {
req.createResponse(SipServletResponse.SC_OK).send();
}
protected void doRegister(SipServletRequest req) throws IOException, ServletException {
String aor = req.getFrom().getURI().toString().toLowerCase();
synchronized (_addresses) {
if (req.getExpires() != 0) {
_addresses.put(aor, req.getAddressHeader("Contact").getURI());
}
else {
_addresses.remove(aor);
}
}
req.createResponse(SipServletResponse.SC_OK).send();
}
protected void doMessage(SipServletRequest req) throws IOException, ServletException {
SipURI uri = null;
synchronized (_addresses) {
// Get the previous registered address for the sender.
uri = (SipURI) _addresses.get(req.getFrom().getURI().toString().toLowerCase());
}
if (uri == null) {
// Reject the message if it is not from a registered user.
req.createResponse(SipServletResponse.SC_FORBIDDEN).send();
return;
}
// We accept the instant message by returning 200 OK response.
req.createResponse(SipServletResponse.SC_OK).send();
// Create an echo SIP MESSAGE request with the same content.
SipServletRequest echo = req.getSession().createRequest("MESSAGE");
String charset = req.getCharacterEncoding();
if (charset != null) {
echo.setCharacterEncoding(charset);
}
echo.setRequestURI(uri);
echo.setContent(req.getContent(), req.getContentType());
// Send the echo MESSAGE request back to Windows Messenger.
echo.send();
}
protected void doSuccessResponse(SipServletResponse resp) throws IOException, ServletException {
// Print out when the echo message was accepted.
if (resp.getMethod().equalsIgnoreCase("MESSAGE")) {
System.out.println("\"" + resp.getRequest().getContent() + "\" was accepted: " + resp.getStatus());
}
}
protected void doErrorResponse(SipServletResponse resp) throws IOException, ServletException {
// Print out when the echo message was rejected/
if (resp.getMethod().equalsIgnoreCase("MESSAGE")) {
System.out.println("\"" + resp.getRequest().getContent() + "\" was rejected: " + resp.getStatus());
}
}
protected void doBye(SipServletRequest req) throws IOException, ServletException {
// Accept session termination by returning 200 OK response.
req.createResponse(SipServletResponse.SC_OK).send();
}
}
Этот код использует древнюю спецификацию JSR 116: SIP Servlet API и для его запуска, как водится в Java EE мире, требуется собрать проект в виде .sar
-файла и развернуть в контейнере SIP-сервлетов (подобно тому как для для выполнения web-сервлетов нужен контейнер web-сервлетов). Идея тут в том, что есть некий готовый SIP-сервер, поддерживающий данную спецификацию, и вы пишите для него свое бизнес-приложение.
Хорошая новость в том, что с тех пор вышла новая версия спецификации JSR 289: SIP Servlet v1.1 с "современными" штуками типа аннотаций. И, похоже, даже существует и поддерживается сервер, который умеет с этим работать - RestComm.
Про все это дело даже есть книга Understanding SIP Servlets 1.1 (Chris Boulton , Kristoffer Gronowski).
Виртуальный выделенный сервер (VDS) становится отличным выбором
Мне нужно чтоб браузер изменил свои масштаб ( zoom in/out ), пытаюсь это организовать следующими метода, но ни один из них не работаетПрошу помогите
Есть класс(Example) который реализует интерфейс Serializable