top button
Flag Notify
    Connect to us
      Site Registration

Site Registration

What is inter-servlet communication?

+3 votes
390 views
What is inter-servlet communication?
posted Dec 14, 2015 by Dominic

Share this question
Facebook Share Button Twitter Share Button LinkedIn Share Button

1 Answer

+1 vote

As the name says it, it is communication between servlets. Servlets talking to each other. [There are many ways to communicate between servlets, including

Request Dispatching

HTTP Redirect

Servlet Chaining

HTTP request (using sockets or the URLConnection class)

Shared session, request, or application objects (beans)

Direct method invocation (deprecated)

Shared static or instance variables (deprecated)

Search the FAQ, especially topic Message Passing (including Request Dispatching) for information on each of these techniques. -Alex]

Basically interServlet communication is acheived through servlet chaining. Which is a process in which you pass the output of one servlet as the input to other. These servlets should be running in the same server.

e.g. ServletContext.getRequestDispatcher(HttpRequest, HttpResponse).forward(“NextServlet”) ; You can pass in the current request and response object from the latest form submission to the next servlet/JSP. You can modify these objects and pass them so that the next servlet/JSP can use the results of this servlet.

There are some Servlet engine specific configurations for servlet chaining.

Servlets can also call public functions of other servlets running in the same server. This can be done by obtaining a handle to the desired servlet through the ServletContext Object by passing it the servlet name ( this object can return any servlets running in the server). And then calling the function on the returned Servlet object.

e.g. TestServlet test= (TestServlet)getServletConfig().getServletContext().getServlet(“OtherServlet”);

otherServletDetails= Test.getServletDetails();

You must be careful when you call another servlet’s methods. If the servlet that you want to call implements the SingleThreadModel interface, your call could conflict with the servlet’s single threaded nature. (The server cannot intervene and make sure your call happens when the servlet is not interacting with another client.) In this case, your servlet should make an HTTP request to the other servlet instead of direct calls.

Servlets could also invoke other servlets programmatically by sending an HTTP request. This could be done by opening a URL connection to the desired Servlet.

answer Dec 15, 2015 by Karthick.c
...