A server that loads a SingleThreadModelservlet must guarantee,

A server that loads a SingleThreadModelservlet must guarantee, according to the Servlet API documentation, “that no two threads will execute concurrently the service method of that servlet.” To accomplish this, each thread uses a free servlet instance from the pool, as shown in Figure 3-4. Thus, any servlet implementing SingleThreadModelcan be considered thread safe and isn’t required to synchronize access to its instance variables. Figure 3-4. The Single Thread Model Such a life cycle is pointless for a counter or other servlet application that requires central state maintenance. The life cycle can be useful, however, in avoiding synchronization while still performing efficient request handling. For example, a servlet that connects to a database sometimes needs to perform several database commands atomically as part of a single transaction. Normally, this would require the servlet to synchronize around the database commands (letting it manage just one request at a time) or to manage a pool of database connections where it can “check out” and “check in” connections (letting it support multiple concurrent requests). By instead implementing SingleThreadModeland having one “connection” instance variable per servlet, a servlet can easily handle concurrent requests by letting its server manage the servlet instance pool (which doubles as a connection pool). The skeleton code is shown in Example 3-5. Example 3-5. Handling database connections using SingleThreadModel import java.io.*; import java.sql.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; Example 3-5. Handling database connections using SingleThreadModel (continued)

Hint: This post is supported by Gama php5 hosting services

Comments are closed.