RE: Tomcat + Apache lifecycle question

2002-02-08 Thread Anton Brazhnyk

Hi,

 -Original Message-
 From: Daniel Drasin [mailto:[EMAIL PROTECTED]]
 Sent: Friday, February 08, 2002 3:37 PM
 To: Tomcat Users List
 Subject: Tomcat + Apache lifecycle question
 
 
 I've set up Tomcat 4.x to work with Apache 1.3.x using the
 Warp connector stuff.  I followed the standard instructions for
 how to modify the httpd.conf file of apache, etc.  (All pretty 
 straightforward...)  My problem is that i need to have a certain
 activity occur when Tomcat starts up.  This activity is to initialize
 a certain set of java objects and make them available to servlets.
 Because of classpath issues (i.e. classloaders) i was unable to use
 the lifecycle hooks of the contexts and had to settle for the 
 (hackish) method of making a dummy servlet that only exists to
 have its load-on-startup value set (excerpt from the web.xml is
 below).  This servlet has an init() definition that initializes the 
 objects in question (example definition below.)
 
 The issue is that i need to have this activity occur once and only
 once - so i add a static flag into the init method to see if it's
 already run.  However, this doesn't work.  When i start tomcat,
 the initialization code runs and when i start apache, it runs 
 again - despite the flag.  (Output included below).
 
 My guess is that the flag doesn't help because these init() calls
 are occuring in two different object spaces (class loaders) so the
 flag really is false both times.
 
 So my question is - what's going on here.  Fundamentally, how can
 i achieve my goal outlined in paragraph 1.  At a deeper level, my
 question is - why do i get two calls to startup?  

Well, AFAIK yes. But by default there are two Services.
Standalone and Apache-Tomcat. So, you either have to choose one 
of them (since they're really different) or try to use JNDI for that purpose.

 Is tomcat starting
 a new context for apache?  If so, why doesn't it use the one that 
 it's already started?  Is there a way to surpress the starting of
 one of the contexts?  
 
 Any help is appreciated
 
 Dan


Anton

--
To unsubscribe:   mailto:[EMAIL PROTECTED]
For additional commands: mailto:[EMAIL PROTECTED]
Troubles with the list: mailto:[EMAIL PROTECTED]




Re: Tomcat + Apache lifecycle question

2002-02-08 Thread Julien OIX

Daniel Drasin a écrit :
 
 I've set up Tomcat 4.x to work with Apache 1.3.x using the
 Warp connector stuff.  I followed the standard instructions for
 how to modify the httpd.conf file of apache, etc.  (All pretty
 straightforward...)  My problem is that i need to have a certain
 activity occur when Tomcat starts up.  This activity is to initialize
 a certain set of java objects and make them available to servlets.
 Because of classpath issues (i.e. classloaders) i was unable to use
 the lifecycle hooks of the contexts and had to settle for the
 (hackish) method of making a dummy servlet that only exists to
 have its load-on-startup value set (excerpt from the web.xml is
 below).  This servlet has an init() definition that initializes the
 objects in question (example definition below.)
 
 The issue is that i need to have this activity occur once and only
 once - so i add a static flag into the init method to see if it's
 already run.  However, this doesn't work.  When i start tomcat,
 the initialization code runs and when i start apache, it runs
 again - despite the flag.  (Output included below).
 
 My guess is that the flag doesn't help because these init() calls
 are occuring in two different object spaces (class loaders) so the
 flag really is false both times.
 
 So my question is - what's going on here.  Fundamentally, how can
 i achieve my goal outlined in paragraph 1.  At a deeper level, my
 question is - why do i get two calls to startup?  Is tomcat starting
 a new context for apache?  If so, why doesn't it use the one that
 it's already started?  Is there a way to surpress the starting of
 one of the contexts?
 
 Any help is appreciated
 
 Dan
 -CODE AND OUTPUT---
 
 ...
 servlet
   servlet-name
   ServletTest
   /servlet-name
   servlet-class
   ServletTest
   /servlet-class
   load-on-startup0/load-on-startup
 ...
 
 ...
 public class ServletTest extends HttpServlet {
 static int i = 0;
 static boolean flag = false;
 static {
 i++;
 if(!flag) {
  flag = true;
  System.out.println(***GOT  + i +  **);
   }
 }
 ...
 
 ...
 Starting service Tomcat-Standalon
 Apache Tomcat/4.0.1
 ***GOT 1 **

delete this service ( everything in the right Service section ) from
server.xml

hope this helps 


 Starting service Tomcat-Apache
 Apache Tomcat/4.0.1
 ***GOT 1 **
 ...
 
 --
 Daniel Drasin   Applied Reasoning
 [EMAIL PROTECTED] 8612 Long Meadow Ct.
 (410)-461-6168  Columbia, MD, 21045
 http://www.appliedreasoning.com
 
 --
 To unsubscribe:   mailto:[EMAIL PROTECTED]
 For additional commands: mailto:[EMAIL PROTECTED]
 Troubles with the list: mailto:[EMAIL PROTECTED]

-- 
Julien OIX
Service Informatique de Gestion
Tél: 02 40 99 83 65
mail: [EMAIL PROTECTED]

--
To unsubscribe:   mailto:[EMAIL PROTECTED]
For additional commands: mailto:[EMAIL PROTECTED]
Troubles with the list: mailto:[EMAIL PROTECTED]




RE: Tomcat + Apache lifecycle question

2002-02-08 Thread Kaddumukasa, Charles

To achieve what you're trying to do, use the Singleton Pattern. I have used
it successfully. In the init method, have a class with a private constructor
and a public static synchronized method that creates an instance of the
class and creates and stores the objects in the context. But remember that
before creating the objects, first check to make sure that they do not exist
in the context. If they do, just return from the method. 

I have not encountered situations where init is called more than once.
Tomcat 4.x complies to both the Servlet 2.3 and JSP 1.2 specifications.
Those specifications stipulate that init should be called only once. Since
Tomcat is Sun's (Microsystems) reference implementation for the Servlet and
JSP specs, it duly conforms.

Hope this is helpful.

Charles 


-Original Message-
From: Julien OIX [mailto:[EMAIL PROTECTED]]
Sent: Friday, February 08, 2002 9:13 AM
To: Tomcat Users List
Subject: Re: Tomcat + Apache lifecycle question


Daniel Drasin a écrit :
 
 I've set up Tomcat 4.x to work with Apache 1.3.x using the
 Warp connector stuff.  I followed the standard instructions for
 how to modify the httpd.conf file of apache, etc.  (All pretty
 straightforward...)  My problem is that i need to have a certain
 activity occur when Tomcat starts up.  This activity is to initialize
 a certain set of java objects and make them available to servlets.
 Because of classpath issues (i.e. classloaders) i was unable to use
 the lifecycle hooks of the contexts and had to settle for the
 (hackish) method of making a dummy servlet that only exists to
 have its load-on-startup value set (excerpt from the web.xml is
 below).  This servlet has an init() definition that initializes the
 objects in question (example definition below.)
 
 The issue is that i need to have this activity occur once and only
 once - so i add a static flag into the init method to see if it's
 already run.  However, this doesn't work.  When i start tomcat,
 the initialization code runs and when i start apache, it runs
 again - despite the flag.  (Output included below).
 
 My guess is that the flag doesn't help because these init() calls
 are occuring in two different object spaces (class loaders) so the
 flag really is false both times.
 
 So my question is - what's going on here.  Fundamentally, how can
 i achieve my goal outlined in paragraph 1.  At a deeper level, my
 question is - why do i get two calls to startup?  Is tomcat starting
 a new context for apache?  If so, why doesn't it use the one that
 it's already started?  Is there a way to surpress the starting of
 one of the contexts?
 
 Any help is appreciated
 
 Dan
 -CODE AND OUTPUT---
 
 ...
 servlet
   servlet-name
   ServletTest
   /servlet-name
   servlet-class
   ServletTest
   /servlet-class
   load-on-startup0/load-on-startup
 ...
 
 ...
 public class ServletTest extends HttpServlet {
 static int i = 0;
 static boolean flag = false;
 static {
 i++;
 if(!flag) {
  flag = true;
  System.out.println(***GOT  + i +  **);
   }
 }
 ...
 
 ...
 Starting service Tomcat-Standalon
 Apache Tomcat/4.0.1
 ***GOT 1 **

delete this service ( everything in the right Service section ) from
server.xml

hope this helps 


 Starting service Tomcat-Apache
 Apache Tomcat/4.0.1
 ***GOT 1 **
 ...
 
 --
 Daniel Drasin   Applied Reasoning
 [EMAIL PROTECTED] 8612 Long Meadow Ct.
 (410)-461-6168  Columbia, MD, 21045
 http://www.appliedreasoning.com
 
 --
 To unsubscribe:   mailto:[EMAIL PROTECTED]
 For additional commands: mailto:[EMAIL PROTECTED]
 Troubles with the list: mailto:[EMAIL PROTECTED]

-- 
Julien OIX
Service Informatique de Gestion
Tél: 02 40 99 83 65
mail: [EMAIL PROTECTED]

--
To unsubscribe:   mailto:[EMAIL PROTECTED]
For additional commands: mailto:[EMAIL PROTECTED]
Troubles with the list: mailto:[EMAIL PROTECTED]

--
To unsubscribe:   mailto:[EMAIL PROTECTED]
For additional commands: mailto:[EMAIL PROTECTED]
Troubles with the list: mailto:[EMAIL PROTECTED]