O'Reilly logo

Java and XSLT by Eric M. Burke

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Servlet Threading Issues

Like it or not, a servlet must be capable of serving more than one client at a time. Built-in threading capability is one of the key reasons why Java is so well-suited to server applications, particularly when compared to a traditional CGI model. As usual, however, tradeoffs are involved. In particular, writing code that can handle many concurrent tasks without corrupting data can be quite challenging at times. Ideally, this material can alert you to the most common causes of threading problems found in a servlet environment.

Servlet Threading Model

In the standard servlet model, a client makes a request via the servlet’s service( ) method. In the HttpServlet class, the service( ) method determines the type of HTTP request and delegates to methods such as doGet( ) or doPost( ). If several clients issue requests at the same time, these methods will serve each client in a different thread. Since most servlets are subclasses of HttpServlet, your main concern is insuring that service( ), doGet( ), and doPost( ) can handle many concurrent clients.

Before handling any requests, a servlet’s init( ) method is invoked. According to the servlet API specification, this method must be invoked by only a single thread and must complete successfully before subsequent threads are allowed to enter the service( ) method. For this reason, you do not have to worry about threading problems inside of the init( ) method. From there, however, all bets are off.

One simplistic approach ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required