Chapter 17. Tuning Servlets and JSPs

Most J2EE applications are built around servlets and JSPs. The two types of performance considerations for servlets and JSPs are efficient use of J2SE code (Strings, I/O, etc.) and optimizing servlet container-related resources, including the resources provided as part of the Servlet API.

Since JSPs are compiled into servlets, there is usually little difference in performance between them. However, explicitly coding servlets can result in faster applications than JSPs because you have much more control over the fine details of the servlet. This is one of the standard performance tradeoffs: using JSPs results in a better design (separating presentation and logic), but servlets can be tweaked to go faster.

Don’t Use SingleThreadModel

javax.servlet.SingleThreadModel is a marker interface available to servlet developers that pushes responsibility for thread safety onto the servlet engine. Essentially, if your servlet implements SingleThreadModel , the servlet engine creates a separate servlet instance for each concurrent request using the servlet. SingleThreadModel does not even guarantee thread safety, since the resulting servlet instances can still access classes and data at the same time. However, SingleThreadModel does guarantee that more resources will be used than are needed, as maintaining the multiple instances has some cost to the servlet engine.

Instead of using SingleThreadModel, concentrate on writing a thread-safe multi-threaded servlet. ...

Get Java Performance Tuning, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.