File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Servlets and the fly likes Servlet instance is started twice Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Servlets
Bookmark "Servlet instance is started twice" Watch "Servlet instance is started twice" New topic

Servlet instance is started twice

Mateusz Moroz

Joined: Oct 29, 2008
Posts: 21

I got a problem with my servlet on OC4J, because it instance is being created twice by the container. My web.xml:

and my servlet code:

1. The init() method is called twice
2. The destroy() method isn't called
3. The servlet is mapped only once
4. Each time servlet starts, the instances attribute is 0 and the previously created singleton JournallingOrdersGenerator is null

The problem is, that when servlet starts twice, the singleton object JournallingOrdersGenerator is again null and is created (and started) twice.

I'm desperated and I have no more ideas how to fix it. Do you know any solution? I've read that on Tomcat is the same problem.

Paul Clapham

Joined: Oct 14, 2005
Posts: 19973

Sure. Just don't use an instance variable in a servlet for an object which needs to be a singleton in your application's scope.

Instead create a class which implements ServletContextListener. When it is initialized:

Then anywhere you have access to the servlet context (e.g. in any servlet), you can get that attribute from it and use it.

You'll need to mention that class in your web.xml like this:
Mateusz Moroz

Joined: Oct 29, 2008
Posts: 21
GREAT! Even the servlet is now being created once, what I don't understand (but its way it should!)
Thanks Paul
[ November 06, 2008: Message edited by: Mateusz Moroz ]
I agree. Here's the link:
subject: Servlet instance is started twice
It's not a secret anymore!