Mantis - Resin
Viewing Issue Advanced Details
3943 major always 03-13-10 12:08 08-03-10 12:21
iRideSnow  
alex  
normal  
closed 4.0.4  
fixed  
none    
none 4.0.10  
0003943: Resin 4.x doesn't respond properly to Windows Service "stop" command.
In Resin 3.1, it's possible to install resin as a service and then use the Windows Service commands to stop and start it, e.g. from the DOS prompt one can issue "net stop resin" then go and replace jars or delete the logs, etc, then issue "net start resin" to start it again.

With Resin 4.x, this behavior seems to have changed. Issuing a "net stop resin" doesn't actually stop resin completely. A "net start resin" command says that resin is already started, but it's not really (maybe only the watchdog is? Not sure.)

It looks like the only way to completely shut down resin is to use resin.exe and say "resin shutdown". This means we wouldn't be able to use the Windows SC (Service Controller) commands with Resin 4.x to stop and start resin during our deployment process. SC doesn't recognize "shutdown" as a valid option.

Notes
(0004469)
hans   
03-16-10 06:14   
+1 for fixing this. This issue is causing some problems here as well. Thank you for reporting !
(0004643)
alex   
06-21-10 11:01   
Can't reproduce on a fresh install of Resin 4.0.4. Please attach your log files for resin and watchdog.
(0004674)
iRideSnow   
07-13-10 17:33   
Due to changes/restrictions in how our new network is configured, I can no longer create a test for this. Using 4.0.8, I can issue net stop and net start commands locally, and it does seem to work, though still not exactly the same as with 3.1 because it does still keep the watchdog process running. But I can no longer check to see if Windows SC commands work correctly over the network.

But for all I know, this is because I had to use the 3.1 httpd.exe program to install the 4.0.8 resin as a service because even though the 4.x documentation says that "resin -install" can be used to install resin as a service, it cannot. Instead, you have to issue just "resin" and it brings up a somewhat confusing GUI, which I could not figure out how to fill out correctly (e.g., what value is "Server" ???). In desperation, I brought the httpd.exe program over from 3.1 and luckily, it allowed me to install 4.0.8's resin as a service. But for all I know, using httpd changed how it responds to "net stop" and "net start" commands. :(

I realize this is now at least two bug reports, and I cannot give any additional helpful information at this time. I no longer have the freedom to experiment in our much more restrictive environment after our acquisition by a much larger company. Sorry.
(0004684)
alex   
07-26-10 13:31   
I've fixed the first issue you saw, where by the service would report as started even though resin failed to start (although not all cases can be accounted for).

The watchdog issue can be a bit tricky, as one instance of watch dog is watching all servers defined in conf/resin.xml file. A 'shutdown' would shutdown all of the Resin servers/jvms (each server is a jvm). Also, it's OK to ignore the running watchdog and restart the OS anyways. Watchdog's function is restricted to making sure the instances of resin servers keep running.
(0004692)
hans   
08-03-10 07:02   
I have done some fresh testing on a new install.

Resin 4.0.9
Windows 2008 R2 64-bit

I can confirm that the start/stop/restart through Services seems to work fine now. But you have to do a little dancing to get the Resin service installed.

resin.exe -install now tells you to use setup.exe. Nice :-)

setup.exe starts, but fails to pick up the location of the JVM, service name etc. If you try to point to the JDK it crashes on a fresh Windows 2008 R2 64-bit install.

************** Exception Text **************
System.IO.FileNotFoundException: Could not load file or assembly 'System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified.
File name: 'System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
   at Caucho.Util.FindJava()
   at Caucho.SetupForm.UpdateJavaHomes(String javaHome)
   at Caucho.SetupForm.SelectJavaHome(Object sender, EventArgs e)
   at System.Windows.Forms.Control.OnClick(EventArgs e)
     ...........
     
Seems that is needs version 3.0 of the .NET framework. If you look in:
C:\Windows\Microsoft.NET\Framework64 you will only find v2.0.50727.
     
Installing version 4 of the .NET framework will NOT do the trick. You have to go to Server Manager and choose .NET Framework 3.5.1 Features from the Add Features Wizard. That will give you a v3.0 dir in C:\Windows\Microsoft.NET\Framework64 (and a v3.5).

Now setup.exe picks up the JDK location and other settings, and you can add Resin as a service.
(0004694)
alex   
08-03-10 12:21   
Thanks for checking the fixes out. Setup requires .NET 3.5, I included a check in the startup routine that should promptly notify programmer/sysadmin of that requirement. Running the app in .NET 4.0 will require declaring compatibility in setup.exe.config file. We might supply such a file in the future but hopefully MS fixes it in a way that 4.0 can silently run apps compiled against 3.5.