Well, to be paranoid, it would have to be on a remote machine.  If it
wasn't, a network outage would take your app down, but your monitor would
keep right on merrily testing your web app.

If you can't use a remote machine, then you have to get creative with your
JSP, and have it make a connection to the world and look for an external
website (Yahoo, Google, whatever).  A dirty test would be a ping, but pings
are unreliable because of firewalls and other restrictions that might be in
the way.

Even then its only a test of OUTBOUND network access, not INBOUND, which is
what the users do.

I have one machine that is my monitor.  It's also my MRTG host, my web log
processor, and other batch-type processing server.  Any PC capable of
running Linux will do.  It monitors all my servers, and I have it setup so
that it creates a single status page that I can reach via HTTP, in addition
to sending out alerts.

Truly paranoid is a separate monitoring server on a network completely
distinct from your application's network (like across the country), and with
a dial-out POTS line and a modem to use for sending pager alerts.

You can also contract with third-party monitoring services, but my
experience with those is that they irritate server admins like myself pretty
quickly, as they always tend to err on the side of alert, which means the
slightest delay (like net congestion out of your control) in getting a
response triggers an alert, which in turn means lots of "flapping", where
the admin gets up/down alerts repeatedly, even though there is nothing
wrong.

John

> -----Original Message-----
> From: Oscar Carrillo [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, February 25, 2003 4:00 AM
> To: Tomcat Users List
> Subject: RE: crontab problems
> 
> 
> Good points.
> 
> Where would you suggest putting this script?
> On the machine itself, or on another machine that has to
> get to it through the internet?
> 
> I think this is a great idea for many widely deployed application.
> 
> Oscar
> 
> On Tue, 25 Feb 2003, Turner, John wrote:
> 
> > 
> > Sorry to be pedantic, but that example doesn't do anything 
> at all.  I think
> > first that you would want ContentLength() to be less than 
> or equal to zero,
> > and even then it doesn't test the availability of your app, 
> because a 404 or
> > 500 Internal Server error will have a content length 
> greater than zero and
> > be a valid answer to the request as far as the monitor is concerned.
> > 
> > If your app uses a database, and you want to monitor that 
> your app is "up",
> > you must create a JSP page that queries a database for a 
> known value, and
> > either returns that value as the response (preferred) or 
> determines if the
> > value is correct and instead returns the value of a constant as the
> > response, such as a string like "SUCCESS" or "OK" or "APP 
> UP" or something
> > else.  The monitor must then check for that value.
> > 
> > Anything else is not a test of your web app, and even then 
> it is only a
> > partial test, since a true test would be to emulate a user 
> session exactly
> > with some sort of robot script.
> > 
> > If your web app does not use a database or other remote 
> data source, you can
> > get away with a servlet or JSP that does something like:
> > 
> > <html>
> > <head>
> > <title>APP Monitor</title>
> > </head>
> > <body>
> > <%
> > String myMonitor = "SUCCESS";
> > out.println(myMonitor);
> > %>
> > </body>
> > </html>
> > 
> > Then your monitor needs to determine if the contents of the 
> response contain
> > "SUCCESS" or not.  If yes, everything is OK.  If not, 
> something is wrong.
> > 
> > John
> > 
> > > -----Original Message-----
> > > From: Hannes Schmidt [mailto:[EMAIL PROTECTED]
> > > Sent: Tuesday, February 25, 2003 3:06 PM
> > > To: Tomcat Users List
> > > Subject: Re: crontab problems
> > > 
> > > 
> > > > Would you expand on option 2.
> > > 
> > > A Java thread is a sequence of execution of Java bytecode 
> on a JVM.
> > > Obviously, there can be multiple threads per JVM. A JVM 
> is a native
> > > operating system process interpreting (sometimes compiling on 
> > > the fly) the
> > > bytecode of at least one Java thread. Since there can be 
> > > multiple processes
> > > per machine, there can be multiple JVMs per machine. Ideally, 
> > > these JVMs are
> > > completely separated, at least their address space (memory) 
> > > is. Sometimes an
> > > operating system provides native threads. These are threads 
> > > of execution of
> > > machine instructions on the real machine. There can be 
> multiple native
> > > threads per native process. Thus, it is possible to map 
> > > native threads to
> > > Java threads: the JVM process contains multiple real threads, 
> > > each executing
> > > one thread of bytecode. I don't think the Sun's JVM does 
> > > that, but I'm not
> > > sure.
> > > 
> > > You just have to make sure that the monitoring thread is not 
> > > executed inside
> > > the same JVM that runs the application to be monitored.
> > > 
> > > > Why is this a thread rather than a java app that is started 
> > > on system
> > > > startup ?
> > > 
> > > Option 2 IS a Java application. It consists of a single Java 
> > > thread (the one
> > > running the main() method). But it is started only once 
> and it repeats
> > > internally - note the infinite while() loop. A cronjob is a 
> > > Unix process
> > > that is repeated externally. I use the term externally, 
> because it is
> > > started all over again periodically by an 'higher power', 
> i.e. CRON.
> > > Cronjobs don't usually contain infinite loops. Whether to use 
> > > internal or
> > > external repetition depends on the situation: external 
> > > repetetion is more
> > > time consuming but it releases all resources, e.g. memory 
> after each
> > > iteration. Internal repetition is fast but it blocks 
> > > resources forever,
> > > basically. So if something needs to be executed once every 
> > > minute I would
> > > strongly suggest internal repetition. If it needs to run once 
> > > a day only, I
> > > would suggest external repetition.
> > > 
> > > import java.net.*;
> > > public class Main {
> > >     public void main( String[] args ) {
> > >         while(true) {
> > >             URL url = new URL( "http://localhost:8080/examples"; );
> > >             URLConnection con = url.openConnection();
> > >             con.setUseCaches( false );
> > >             con.connect();
> > >             if( con.getContentLength() > 0 ) {
> > >                 // restart tomcat
> > >             }
> > >             // cleanup
> > >             Thread.getCurrentThread().sleep( 100 ); // or so, 
> > > I'm not sure
> > >         }
> > >     }
> > > }
> > > 
> > > 
> > > ----- Original Message -----
> > > From: "Ron Day" <[EMAIL PROTECTED]>
> > > To: "Tomcat Users List" <[EMAIL PROTECTED]>
> > > Sent: Tuesday, February 25, 2003 8:00 PM
> > > Subject: RE: crontab problems
> > > 
> > > 
> > > >
> > > >
> > > > Ron
> > > >
> > > > -----Original Message-----
> > > > From: Hannes Schmidt [mailto:[EMAIL PROTECTED]
> > > > Sent: Tuesday, February 25, 2003 12:50 PM
> > > > To: Tomcat Users List
> > > > Subject: Re: crontab problems
> > > >
> > > >
> > > > There's not a single JVM per machine. Even if the JVM 
> running Tomcat
> > > inside
> > > > it is crashed, it's prefectly ok to start another one 
> > > testing for the
> > > > existence or availability of Tomcat and/or a webapp. That 
> > > will work. It's
> > > > just that this solution is a little awkward. Let me 
> summarize the
> > > > alternatives:
> > > >
> > > > 1) A cronjob shell script using wget as John suggested.
> > > >
> > > > 2) A Java Thread running in a different UNIX process, 
> i.e. JVM which
> > > > repeatedly tests the webapp's availability like I suggested 
> > > in my first
> > > > posting. That thread runs in a loop and is NOT started 
> > > regularly by cron
> > > but
> > > > once when the system starts (aka. init script).
> > > >
> > > > Aside from that, your primary goal should be to get rid of 
> > > the crash. Ever
> > > > tried downgrading to a 1.3 JDK?
> > > >
> > > > ----- Original Message -----
> > > > From: "Turner, John" <[EMAIL PROTECTED]>
> > > > To: "'Tomcat Users List'" <[EMAIL PROTECTED]>
> > > > Sent: Tuesday, February 25, 2003 6:16 PM
> > > > Subject: RE: crontab problems
> > > >
> > > >
> > > > >
> > > > > No, I guess that would work.  It just seems to be 
> > > needlessly complicated
> > > > and
> > > > > resource intensive.  You normally don't consider a 
> > > program crashing as
> > > > > normal behavior.  The point of a monitoring application 
> > > is for it to
> > > NEVER
> > > > > crash, and continually check some other application.
> > > > >
> > > > > Think about it....cron launches your program to see 
> if Tomcat is
> > > started.
> > > > > Well, Tomcat isn't.  That's a given, considering that 
> the JVM just
> > > > crashed.
> > > > > A circle.  See?  Your application is Tomcat, not the JVM.
> > > > >
> > > > > My point is that if you can successfully retrieve output 
> > > from Tomcat,
> > > > > generated by either a servlet or a JSP, all is well.  
> > > Tomcat is happy,
> > > the
> > > > > JVM is happy, all is well.  If you can't, something is 
> > > wrong, and you
> > > have
> > > > > to restart anyway.  Seems simpler to me, but I guess 
> > > there will always
> > > be
> > > > > different ways to do things.
> > > > >
> > > > > Heck, if this happens alot, you'd probably just be better 
> > > off profiling
> > > > your
> > > > > application, finding out WHY it happens (maybe 
> something could be
> > > > rewritten
> > > > > or re-architected to avoid triggering those bugs), and 
> > > possibly just
> > > > > determining that a restart every other day or something 
> > > is sufficient.
> > > In
> > > > > that case, just set up a cron job to run at 4 AM your 
> > > time 3 times a
> > > week
> > > > > that restarts Tomcat, without even bothering to check status.
> > > > >
> > > > > The typcial goal for a monitoring application is to 
> alert you that
> > > > something
> > > > > is wrong...not to treat something that goes wrong as a 
> > > normal event.
> > > > >
> > > > > John
> > > > >
> > > > > > -----Original Message-----
> > > > > > From: Ayhan Peker [mailto:[EMAIL PROTECTED]
> > > > > > Sent: Tuesday, February 25, 2003 12:06 PM
> > > > > > To: Tomcat Users List
> > > > > > Subject: RE: crontab problems
> > > > > >
> > > > > >
> > > > > > Am I right to think that if jvm crashes...Once writing to
> > > > > > core file is
> > > > > > finished, jvm can be restarted..(that is what we have 
> > > been doing--jvm
> > > > > > crashes, of course tomcat too)
> > > > > > AND crontab say 5 min later..launches this java 
> > > programme, which will
> > > > > > restart tomcat..this is not a thread..just a java
> > > > > > programme...that is the
> > > > > > reason I am trying to launch it from crontab...
> > > > > >
> > > > > > When jvm crashes it writes its report..and goes 
> away from the
> > > > > > memory..You
> > > > > > can still launch a java programme after this crash (like
> > > > > > launching tomcat
> > > > > > again after the crash)..
> > > > > >
> > > > > > ..
> > > > > >
> > > > > > --tomcat running
> > > > > > --jvm crashes..
> > > > > > --crontab launches my watcher (written in java)
> > > > > > --my application checks if tomcat is running...and restarts
> > > > > > is necessary..
> > > > > > --if my programme is running at the time of crash..my
> > > > > > programme crashes
> > > > > > too...but 5 min later my programme is activated by 
> > > crontab again..
> > > > > >
> > > > > >
> > > > > > Am I missing something here?
> > > > > >
> > > > > > Take care..
> > > > > >
> > > > > > Ayhan
> > > > > >
> > > > > >
> > > > > >
> > > > > > At 10:12 AM 2/25/03 -0500, you wrote:
> > > > > >
> > > > > > >Well, if the JVM is "crashed", how can a program or
> > > > > > application written in
> > > > > > >Java help you manage Tomcat?  That was the point.
> > > > > > >
> > > > > > >John
> > > > > > >
> > > > > > > > -----Original Message-----
> > > > > > > > From: Ayhan Peker [mailto:[EMAIL PROTECTED]
> > > > > > > > Sent: Tuesday, February 25, 2003 9:43 AM
> > > > > > > > To: Tomcat Users List
> > > > > > > > Subject: RE: crontab problems
> > > > > > > >
> > > > > > > >
> > > > > > > > I have no problems with tomcat...
> > > > > > > >
> > > > > > > > But sometimes under heavy load jvm 1.4 crashes...
> > > > > > > > see the links:
> > > > > > > >
> > > > > > > > Ok this is the bug:
> > > > > > > >
> > > > > > 
> > > 
> http://developer.java.sun.com/developer/bugParade/bugs/4779653.html
> > > > > > > > unfortunately it is closed, affects 1.4.1 and will not
> > > > > > > > apparently be fixed.
> > > > > > > > It oiccurs in large apps under load.on Linux 
> and Solaris (
> > > > > > > > and most likely
> > > > > > > > Windows )
> > > > > > > > It is related to / a copy of the following bug which
> > > > > > > >
> > > > > > 
> > > 
> http://developer.java.sun.com/developer/bugParade/bugs/4724356.html
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > what is the best suggestion?
> > > > > > > >
> > > > > > > > just trying to determine if tomcat is running..
> > > > > > > > if not i will restart it ..
> > > > > > > > (jvm just crashed last saturday night....I did not know
> > > > > > > > anything until the
> > > > > > > > sunday evening)..
> > > > > > > >
> > > > > > > >
> > > > > > > > At 09:29 AM 2/25/03 -0500, you wrote:
> > > > > > > >
> > > > > > > > >Yes, Tomcat is generally very stable.  But: Trust, 
> > > but verify. ;)
> > > > > > > > >
> > > > > > > > >John
> > > > > > > > >
> > > > > > > > > > -----Original Message-----
> > > > > > > > > > From: Hannes Schmidt 
> > > [mailto:[EMAIL PROTECTED]
> > > > > > > > > > Sent: Tuesday, February 25, 2003 9:23 AM
> > > > > > > > > > To: Tomcat Users List
> > > > > > > > > > Subject: Re: crontab problems
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > Yes, using wget is probably the second best 
> > > solution. The
> > > > > > > > > > best one is to
> > > > > > > > > > find the reason why Tomcat crashes at all, 
> > > since it generally
> > > > > > > > > > is a stable
> > > > > > > > > > and reliable product.
> > > > > > > > > >
> > > > > > > > > > Cron doesn't execute more than once a minute 
> > > (at least mine
> > > > > > > > > > doesn't) which
> > > > > > > > > > still is quite often. 5 or 10 minutes would be 
> > > ok too. But
> > > > > > > > > > that's a matter
> > > > > > > > > > of taste, really.
> > > > > > > > > >
> > > > > > > > > > ----- Original Message -----
> > > > > > > > > > From: "Turner, John" <[EMAIL PROTECTED]>
> > > > > > > > > > To: "'Tomcat Users List'" 
> > > <[EMAIL PROTECTED]>
> > > > > > > > > > Sent: Tuesday, February 25, 2003 3:00 PM
> > > > > > > > > > Subject: RE: crontab problems
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > Agreed...using a Java program to watch 
> Tomcat seems a
> > > > > > > > > > little circular.
> > > > > > > > > > > Plus, I don't see any sort of delay or 
> "sleep" in the
> > > > > > > > poster's JAva
> > > > > > > > > > > code...it looks like it just keeps hammering 
> > > at Tomcat, as
> > > > > > > > > > the cron job is
> > > > > > > > > > > "* * * * *".  Creating all those Runtime 
> > > objects over and
> > > > > > > > > > over can't be
> > > > > > > > > > > helping performance any.
> > > > > > > > > > >
> > > > > > > > > > > A simple shell script using wget would be 
> > > fine...sure, you
> > > > > > > > > > can watch the
> > > > > > > > > > > output of "ps -ef", but that doesn't tell you 
> > > if Tomcat
> > > > > > > > is accepting
> > > > > > > > > > > requests or not.  There could be an entry for 
> > > Tomcat in the
> > > > > > > > > > process table,
> > > > > > > > > > > but Tomcat could be refusing requests.
> > > > > > > > > > >
> > > > > > > > > > > I just write a simple JSP page that outputs 
> > > the contents of
> > > > > > > > > > a variable,
> > > > > > > > > > like
> > > > > > > > > > > "***SUCCESS***" or something like that, then 
> > > use wget to
> > > > > > > > > > grab that page
> > > > > > > > > > > every so often and check for the string in 
> > > the output...if
> > > > > > > > > > it's there,
> > > > > > > > > > > things should be OK (there are no 
> > > guarantees).  If it's
> > > > > > > > > > not, you have a
> > > > > > > > > > > problem.  This way, the JSP page is compiled 
> > > and cached by
> > > > > > > > > > Tomcat, it uses
> > > > > > > > > > > very little memory, and doesn't bog down 
> the server.
> > > > > > > > > > >
> > > > > > > > > > > There are plenty of other alternatives much 
> > > more robust
> > > > > > > > > > than a simple
> > > > > > > > > > shell
> > > > > > > > > > > script...you could use Netsaint/Nagios, Big 
> > > Brother, and a
> > > > > > > > > > whole bunch of
> > > > > > > > > > > others.
> > > > > > > > > > >
> > > > > > > > > > > John
> > > > > > > > > > >
> > > > > > > > > > > > -----Original Message-----
> > > > > > > > > > > > From: Hannes Schmidt
> > > > > > [mailto:[EMAIL PROTECTED]
> > > > > > > > > > > > Sent: Tuesday, February 25, 2003 6:29 AM
> > > > > > > > > > > > To: Tomcat Users List
> > > > > > > > > > > > Subject: Re: crontab problems
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > Right, you might also just put
> > > > > > > > > > > >
> > > > > > > > > > > > JAVA_HOME=...
> > > > > > > > > > > >
> > > > > > > > > > > > at the beginning of your crontab.
> > > > > > > > > > > >
> > > > > > > > > > > > I assume you have good reasons to use a 
> > > Java program to
> > > > > > > > > > watch Tomcat.
> > > > > > > > > > > > Personally, I would have written a shell 
> > > script. If you
> > > > > > > > > > > > really want to use
> > > > > > > > > > > > Java, you might want to use a different, 
> > > more reliable
> > > > > > > > > > > > approach to detect
> > > > > > > > > > > > (un)availability of Tomcat, something like
> > > > > > > > > > > >
> > > > > > > > > > > > import java.net.*;
> > > > > > > > > > > > URL url = new URL( 
> > > "http://localhost:8080/examples"; );
> > > > > > > > > > > > URLConnection con = url.openConnection();
> > > > > > > > > > > > con.setUseCaches( false );
> > > > > > > > > > > > con.connect();
> > > > > > > > > > > > if( con.getContentLength() > 0 ) {
> > > > > > > > > > > >     // restart tomcat
> > > > > > > > > > > > }
> > > > > > > > > > > >
> > > > > > > > > > > > But I just wrote this out of my head ...
> > > > > > > > > > > >
> > > > > > > > > > > > ----- Original Message -----
> > > > > > > > > > > > From: "Ralph Einfeldt" 
> > > <[EMAIL PROTECTED]>
> > > > > > > > > > > > To: "Tomcat Users List" 
> > > <[EMAIL PROTECTED]>
> > > > > > > > > > > > Sent: Tuesday, February 25, 2003 10:43 AM
> > > > > > > > > > > > Subject: RE: crontab problems
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > You have to make shure that your script 
> > > retstart_tomcat
> > > > > > > > > > > > sets and exports all needed environment 
> > > variables before
> > > > > > > > > > > > calling ./startup.sh:
> > > > > > > > > > > >
> > > > > > > > > > > > JAVA_HOME=/usr/local/java/jdk1.3.1
> > > > > > > > > > > > CATALINA_HOME=<path to tomcat installation>
> > > > > > > > > > > > CATALINA_BASE=<path to tomcat instance> or 
> > > $CATALINA_HOME
> > > > > > > > > > > > # JAVA_OPTS='-client -v'
> > > > > > > > > > > >
> > > > > > > > > > > > export JAVA_HOME CATALINA_HOME 
> > > CATALINA_BASE JAVA_OPTS
> > > > > > > > > > > > ./startup.sh
> > > > > > > > > > > >
> > > > > > > > > > > > > -----Original Message-----
> > > > > > > > > > > > > From: Ayhan Peker 
> [mailto:[EMAIL PROTECTED]
> > > > > > > > > > > > > Sent: Tuesday, February 25, 2003 10:30 AM
> > > > > > > > > > > > > To: [EMAIL PROTECTED]
> > > > > > > > > > > > > Subject: crontab problems
> > > > > > > > > > > > >
> > > > > > > > > > > > > but the last two lines returns
> > > > > > > > > > > > > /////////////////////////
> > > > > > > > > > > > > The JAVA_HOME environment variable is 
> not defined
> > > > > > > > > > > > > message..
> > > > > > > > > > > > > /////////////////////////
> > > > > > > > > > > > > my retstart_tomcat scrip is
> > > > > > > > > > > > > #!/bin/sh
> > > > > > > > > > > > > cd /usr/local/tomcat/bin
> > > > > > > > > > > > > ./startup.sh
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > >
> > > > > > > >
> > > > > > 
> > > 
> ---------------------------------------------------------------------
> > > > > > > > > > > > To unsubscribe, e-mail:
> > > > > > > > [EMAIL PROTECTED]
> > > > > > > > > > > > For additional commands, e-mail:
> > > > > > > > > > [EMAIL PROTECTED]
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > >
> > > > > > > >
> > > > > > 
> > > 
> ---------------------------------------------------------------------
> > > > > > > > > > > > To unsubscribe, e-mail:
> > > > > > > > [EMAIL PROTECTED]
> > > > > > > > > > > > For additional commands, e-mail:
> > > > > > > > > > [EMAIL PROTECTED]
> > > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > >
> > > > > > 
> > > 
> ---------------------------------------------------------------------
> > > > > > > > > > > To unsubscribe, e-mail:
> > > > > > > > [EMAIL PROTECTED]
> > > > > > > > > > > For additional commands, e-mail:
> > > > > > > > [EMAIL PROTECTED]
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > >
> > > > > > 
> > > 
> ---------------------------------------------------------------------
> > > > > > > > > > To unsubscribe, e-mail:
> > > > > > [EMAIL PROTECTED]
> > > > > > > > > > For additional commands, e-mail:
> > > > > > > > [EMAIL PROTECTED]
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > 
> > > 
> >---------------------------------------------------------------------
> > > > > > > > >To unsubscribe, e-mail:
> > > > > > [EMAIL PROTECTED]
> > > > > > > > >For additional commands, e-mail:
> > > > > > [EMAIL PROTECTED]
> > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > 
> > > 
> >---------------------------------------------------------------------
> > > > > > >To unsubscribe, e-mail: 
> > > [EMAIL PROTECTED]
> > > > > > >For additional commands, e-mail: 
> > > [EMAIL PROTECTED]
> > > > > >
> > > > > >
> > > > >
> > > > > 
> > > 
> ---------------------------------------------------------------------
> > > > > To unsubscribe, e-mail: 
> [EMAIL PROTECTED]
> > > > > For additional commands, e-mail: 
> > > [EMAIL PROTECTED]
> > > > >
> > > > >
> > > >
> > > >
> > > > 
> > > 
> ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: 
> [EMAIL PROTECTED]
> > > > For additional commands, e-mail: 
> [EMAIL PROTECTED]
> > > >
> > > >
> > > > 
> > > 
> ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: 
> [EMAIL PROTECTED]
> > > > For additional commands, e-mail: 
> [EMAIL PROTECTED]
> > > >
> > > >
> > > 
> > > 
> > > 
> ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > For additional commands, e-mail: 
> [EMAIL PROTECTED]
> > > 
> > 
> > 
> ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> > 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to