Running a Java Program as a Service
Whether by accident or design, the pages and pages and pages of detailed document at http://wrapper.tanukisoftware.com/doc/english/download.jsp make it remarkably difficult to get off the ground with the Java Service Wrapper. Even the simplified version at http://edn.embarcadero.com/article/32068 foxed me.
So here's the very simple step by step guide to running a Java program as a Windows service. I did it with FitNesse.jar but it's the same with any jar file.
How to install FitNesse.jar as a Windows Service
- Make sure you can run your java jar file from the windows command line. if you can't do that, go no further till you can.
- Choose a directory where your jar file and its bits will live. For instance
C:\Program Files\Your Java App\
- Download the Community Build Stable Release of the Javawrapper from the download page.
- Open your downloaded zip file, and pick out these files from their subdirectories:
- Copy them into the
\Your Java App\directory you created in step 2. Don't create any subdirectories, just put everything straight into that directory.
Now, the tricky bit is editting your wrapper.conf file. Here are my edits :
# Java Application wrapper.java.command=java # Java Main class. This class must implement the WrapperListener interface wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp # Java Classpath (include wrapper.jar) Add class path elements as needed starting from 1 wrapper.java.classpath.1=wrappertest.jar wrapper.java.classpath.2=wrapper.jar wrapper.java.classpath.3=fitnesse.jar # Java Library Path (location of Wrapper.DLL or libwrapper.so) wrapper.java.library.path.1= # Java Additional Parameters wrapper.java.additional.1= # Application parameters. Add parameters as needed starting from 1 wrapper.app.parameter.1=fitnesseMain.FitNesseMain wrapper.app.parameter.2=-p 8080 # Log file to use for wrapper output logging. wrapper.logfile=wrapperlogs/wrapper.log # Wrapper Windows NT/2000/XP Service Properties # Name of the service wrapper.name=FitNesse # Display name of the service wrapper.displayname=FitNesse Server # Description of the service wrapper.description=FitNesse is an integration testing wiki and test runner
You'll notice the following points that you may need to customise for your usage:
- My command line to java is just 'java' because I have an ordinary install with java in the path.
- I'm trying to run Fitnesse.jar
- I want FitNesse itself to be passed some parameters -p 8080
- I put everything except logs in the one directory, so I have no paths except for the log file.
You'll want to know how I knew that the main class file for fitnesse.jar is called "fitnesseMain.FitNesseMain". I did that by first renaming a copy of fitnesse.jar to fitnesse.zip so I could double-click to open it in windows explorer. I read the
META-INF/MANIFEST.MF file and looked for the line beginning
That gets me to being able to do this from the command line in the directory where I've dumped everything:
wrapper -c wrapFitNesse.conf
I renamed the conf file because after all, it's specific to the jar file I'm trying to run. If it doesn't work, you probably need to edit the config file again. The point is that all the information needed to launch the jar file is in the conf file.
You should find that Ctrl-C stops the application.
Fortunately this bit's easier. The inappropriately named
InstallTestWrapper-NT.bat just needs a one line edit to work:
And then you can run it:
Automatic Startup of your Java Program as a Windows Service
Voila! For this, I am grateful to tanukisoftware. Now when I open control panel - admin tools - services I find 'FitNesse' listed as a service. I set the startup type to automatic and I'm done.
7 thoughts on “How To Run FitNesse as a Windows Service”
You mention editing the “wrapper.conf” but don’t mention where you got it from and where to place it.
If you’ve downloaded from the tanuki download page, you’ve got a zip file with folders: bin/ conf/ lib/ and some others. wrapper.conf is in the conf/ directory. the other files mentioned are in the bin/ and lib/ directories
I edited the post, hope it’s clearer now.
Great article and just what I was looking for. The install went fine without a hitch! Thanks for the info.
I had a small issue with 32-bit vs. 64-bit JVM on windows since the community edition of the JSW only supports 32-bit. Thought I would note it here in case someone else comes across the same problem
The wrapper has 3 license types. The free community version is GPL V2.
Can I safely assume that the license requirements apply to FitNesse, and not to the software under test?
If not, NSSM looks more appealing (public domain).
Ooh yes, NSSM looks nice!
But I think the GPL license for the wrapper does not restrict you from *using* the wrapper in any way at all. The GPL would only kick it if you used the wrapper souce code to develop your own wrapper.
Yes I think you can safely assume that wrapper license requirements do not apply to your software under test.
Comments are closed.