If you really want the service code to be aggressive about restarting
Tomcat, I would suggest just calling start_tomcat() again.  This would avoid
any dependency on the Service Control Manager's reaction to "ungraceful"
exits.  In fact, I've never seen any documentation from Microsoft about such
restarts.  The only automatic service startups that I know about are upon
booting.  Can you send a reference to MS documentation about this?

In addition, I don't think you would want this to just keep restarting
indefinitely.  If the vm is crashing a lot then there's something going on
that needs to be looked at.  Such restart functionality should be limited to
a certain number of retries.  Continuing to run the vm might interfere with
other software running on the same machine.  Especially if the vm is
crashing due to some unusual resource consumption.

Just my 2 bits worth.

-David


-----Original Message-----
From: Dave Ringoen [mailto:[EMAIL PROTECTED]]
Sent: Thursday, August 30, 2001 2:55 PM
To: '[EMAIL PROTECTED]'
Cc: Chien-Ming Huang; Brian Enright; Rob Webb; Patti Vrobel; Steven
Velez
Subject: PATCH: jk_nt_service can't automatically be restarted by
Windows Service Control Manager upon crash


We're using Tomcat at our company with considerable success, but discovered
that if java.exe crashes for some reason, the Tomcat service won't restart
automatically.

I diagnosed the problem and came up with this discovery and a proposed fix.

jk_nt_service.exe exits too gracefully if the java.exe process dies,
notifying the Service Control Manager that it is shutting down. When Service
Control Manager receives the shutdown message, it does not restart the
service. It assumes that the service was supposed to be shut down.

This patch makes jk_nt_service exit more abruptly without notifying SCM.
With this patch, SCM will correctly initiate a restart of the Tomcat
service.

I couldn't file this in Bugzilla because Bugzilla was down.

Thanks for your consideration on this patch. I'm very impressed with the
Tomcat development approach and process.

Dave Ringoen
Alventive, Inc.


cvs diff -u jk_nt_service.c (in directory
C:\Temp\tomcatsrcnightly\jakarta-tomcat\src\native\mod_jk\nt_service)
Index: jk_nt_service.c
===================================================================
RCS file:
/home/cvspublic/jakarta-tomcat/src/native/mod_jk/nt_service/jk_nt_service.c,
v
retrieving revision 1.3
diff -u -r1.3 jk_nt_service.c
--- jk_nt_service.c     2001/04/24 08:49:46     1.3
+++ jk_nt_service.c     2001/08/30 18:05:02
@@ -535,6 +535,11 @@
                         /* 
                          * Tomcat died !!!
                          */ 
+                        CloseHandle(hServerStopEvent);
+                        CloseHandle(hTomcat);
+                        exit(0); // exit ungracefully so
+                                 // Service Control Manager 
+                                 // will attempt a restart.
                         break;
                     default:
                         /* 

Reply via email to