Hi Chris,
Thanks for the response. Sorry, where I said "...unload a server any time" I
should have said 'servlet'.
I have read that Tomcat does not unload servlets (even though it would be
permissible to do so), but as you say, I have done some logging in the destroy
method, and I see this behavior.
Here's the scenario: I have 3 webapps, let's call them A, B, C. They are all
hosted in the same TC7 instance currently, but they could also all be hosted on
different machines in different TC7 containers.
A certain servlet within app B & C (let's call them B1 and C1) upon init make a
call to a servlet in app A (let's call it A1). What I see is A1, B1, and C1 all
initialize. The init is done by a thread called " pool-2-thread-1", which seems
like a system thread. Ok no problem.
Then, for some reason, A1's destroy method is called, and it is called by a
thread named " http-apr-8080-exec-3", making me think it is being called by a
thread processing the request for either B1 or C1, since no other requests from
anyone outside of B or C have happened yet.
After destroy winds down, then, A1's init method is called by a thread named "
http-apr-8080-exec-11" - another request processing thread I assume.
Everything all works out in the end, and after that I don't see A1, B1, or C1
ever destroyed - but am I guaranteed that they won't ever be destroyed again
unless TC is shutdown or they are manually unloaded?
I understand that given servlets can by spec go up & down, maybe using them was
not the right choice for an application that needs permanency, but we're too
late in development to make that switch now.
So I'm looking for a guarantee that no automatic destroys will happen going
forward just because Tomcat decides to do it on its own. If it is instructed
to shutdown/undeploy/unload by some outside system or by a human user, that's
fine, I'm not worried about that. But I don't want these servlets to be
destroyed just because Tomcat decides to do so for whatever reason.
Hope that helps clarify, and thanks for the feedback.
-Original Message-
From: Christopher Schultz [mailto:ch...@christopherschultz.net]
Sent: Thursday, July 26, 2012 12:38 PM
To: Tomcat Users List
Subject: Re: Permanent servlet in TC7
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1
Chip,
On 7/26/12 3:19 PM, Chip McVey wrote:
> In TC7, is there a way to tell Tomcat to never unload a given servlet
> unless Tomcat itself is being shutdown? I want a single servlet
> instance that I can know will exist for the life of the tomcat process
> without being unloaded & reloaded (unless someone manually instructs
> Tomcat to do so, of course).
>
> Yes, I know I'm "not supposed to do this" and that the servlet spec
> says a container is allowed to unload a server any time as long as a
> request is not in process. I still would like to know if there's some
> Tomcat specific way to tell TC7 to never unload the servlet. And yes,
> I realize even if there is such a way that future versions of Tomcat
> may remove this capability. :)
You have said both "servlet" and "server": which did you mean?
Do you need a particular web application to stay loaded? That's easy:
simply don't undeploy it.
Do you need a single (or multiple) servlet(s) to stay loaded all the time?
That's also easy: I don't believe Tomcat ever actually unloads a servlet. (You
can easily test this by implementing the destroy() method and emitting some
kind of log).
What is it about the servlet that it needs to stay loaded? Servlets aren't
really supposed to have any state, so unloading and re-loading the servlet
shouldn't represent anything traumatic to your web application.
If you have to have some kind of data loaded all the time, consider moving that
data into the ServletContext (aka "application")
attributes: then the servlet can be unloaded and re-loaded at will and the data
will persist.
- -chris
-BEGIN PGP SIGNATURE-
Version: GnuPG/MacGPG2 v2.0.17 (Darwin)
Comment: GPGTools - http://gpgtools.org
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iEYEARECAAYFAlARnJ8ACgkQ9CaO5/Lv0PCaGQCgv7Kgkl04ElbBu5bkqNtuuX+v
5OsAn1MSf6i3CH9vIogXTb+aUKRYq0WN
=6vQK
-END PGP SIGNATURE-
-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org
-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org