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.SingleThreadModelinterface, each JVM may maintain multiple instances of the servlet class.Each JVM has its own unique
javax.servlet.ServletContextinstance. Objects placed in the context are not distributed between JVMs.Each JVM has its own unique listener class instances. Event notification is ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access