Stephane, I have three suggestions for you.
- These kinds of questions are much more appropriate on the TOMCAT-USER
mailing list. The TOMCAT-DEV list is for discussions about building
Tomcat itself.
- You should download and read the servlet specification
<http://java.sun.com/products/servlet/download.html>, so that you
can understand the issues of servlet lifecycle, how many instances of
a servlet there are, and so on.
- If you need to have logic shared between multiple servlets, this logic
should be implemented in separate classes and made available as servlet
context attributes. It is not a good idea to try to reference methods
or data from one servlet in another.
Craig McClanahan
On Thu, 12 Jul 2001, Stephane Grialet wrote:
> I am a new user in this list, and i'm French so please forgive my
> mistakes !
>
> I am developing a project with Tomcat and servlets technology, and i
> have the following problem i would like to submit to you:
>
> I have a basic servlet S1 who includes several methods useful for all
> the other servlets.
> The appli works fine... but suddenly, i get a loss of context that i
> can't explain.
> One of the servlets who calls a S1's method sees all the global
> variables have a NULL value, while a few moments before these values
> were correctly defined.
> These values are config parameters read from the web.xml file of the
> appli. They are initialized in the init() method of the S1 servlet.
>
> So i wonder what's going on...
> Is there any config or servlet memory timeout that raises ? or what ?...
>
> It is a serious problem because all the application becomes
> unpredictably unusable, until i restart Tomcat.
>
> Here is a bit of my S1 servlet code :
>
> /**************************************************************
> public class S1 extends HttpServlet implements SingleThreadModel {
>
> private static String P1;
> ...
>
>
>//------------------------------------------------------------------------------------
>
> // methode d'initialisation: recuperation des parametres de conf
> public void init(ServletConfig sc) throws ServletException {
>
> if (sc == null) {
> System.out.println("ServletConfig = null");
> System.exit(1);
> }
>
> super.init(sc);
> try {
> P1 = sc.getInitParameter("P1");
> ...
>
> if (P1 == null) {
> System.out.println("Paramètres de configuration de l'application
> incorrectement renseignés.");
> System.exit(1);
> }
> else System.out.println("Contexte Base de signalements chargé.");
> }
> catch (Exception e) {
> e.printStackTrace();
> System.out.println("Lecture des paramètres de configuration de
> l'application impossible.");
> System.exit(1);
> }
> }
>
> // method called by other servlets
> public String m1(ServletOutputStream out) {
>
> // uses init parameters such as P1 and returns a result
> ...
> }
> /**************************************************************
>
> thanks for any help
>
> Stéphane
>
>