Preparing for Distributed Deployment
As I described in the previous section, some web containers can distribute the requests for a web application’s resources over multiple servers, each server running its own Java Virtual Machines (JVM). Of course, this has implications for how you develop your application. So, by default, a web container must use only one JVM for an application.
If you want to take advantage of web-container controlled load balancing, you must do two things: mark the application as distributable and follow the rules for a distributed application defined by the servlet specification.
To mark an application as
distributable means adding a
<distributable/>
element in the deployment descriptor
for the application:
<web-app> <description>A distributable application</description> <distributable/> <context-param> ... </web-app>
By doing so, you’re telling the web container that your application adheres to the rules for distributed applications. According to the servlet specification, a distributed application must be able to work within the following constraints:
Each JVM has its own unique servlet instance for each servlet declaration. If a servlet implements the
javax.servlet.SingleThreadModel
interface, each JVM may maintain multiple instances of the servlet class.Each JVM has its own unique
javax.servlet.ServletContext
instance. Objects placed in the context are not distributed between JVMs.Each JVM has its own unique listener class instances. Event notification is ...
Get JavaServer Pages, 3rd 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.