Que é a comunicación entre servlets?

0
9084

Como o nome di, é comunicación entre servlets. Servlets falando entre eles. [Hai moitas formas de comunicarse entre servlets, incluíndo

  • Solicita despacho
  • Redirección HTTP
  • Encadeamento de servlets
  • Solicitude HTTP (usando sockets ou a clase URLConnection)
  • Sesión compartida, solicitude ou obxectos de aplicación (beans)
  • Invocación de método directo (obsoleto)
  • Variables estáticas ou de instancia compartidas (obsoleto)

Busca nas preguntas frecuentes, especialmente no tema Paso de mensaxes (incluído o envío de solicitudes) para obter información sobre cada unha destas técnicas. -Alex]

Basicamente, a comunicación interServlet conséguese mediante o encadeamento de servlets. Que é un proceso no que se pasa a saída dun servlet como entrada a outro. Estes servlets deberían executarse no mesmo servidor.

por exemplo, ServletContext.getRequestDispatcher(HttpRequest, HttpResponse).forward(“NextServlet”); Pode pasar o obxecto de solicitude e resposta actual desde o último envío do formulario ao seguinte servlet/JSP. Pode modificar estes obxectos e pasalos para que o seguinte servlet/JSP poida usar os resultados deste servlet.

Existen algunhas configuracións específicas do motor de servlets para o encadeamento de servlets.

Os servlets tamén poden chamar funcións públicas doutros servlets que se executan no mesmo servidor. Isto pódese facer obtendo un identificador para o servlet desexado a través do Obxecto ServletContext pasándolle o nome do servlet (este obxecto pode devolver calquera servlet en execución no servidor). E despois chamando á función no obxecto Servlet devolto.

ex. TestServlet test= (TestServlet)getServletConfig().getServletContext().getServlet(“OtherServlet”); otherServletDetails= Test.getServletDetails();

Debes ter coidado cando chamas a métodos doutro servlet. Se o servlet ao que queres chamar implementa a interface SingleThreadModel, a túa chamada pode entrar en conflito coa natureza de fío único do servlet. (O servidor non pode intervir e asegurarse de que a súa chamada ocorre cando o servlet non está interactuando con outro cliente.) Neste caso, o seu servlet debería facer unha solicitude HTTP ao outro servlet en lugar de realizar chamadas directas.

Os servlets tamén poden invocar outros servlets mediante programación enviando unha solicitude HTTP. Isto pódese facer abrindo unha conexión URL ao Servlet desexado.