According to the official installation guide, Fisheye is started in a command line, which is not applicable in a server environment where no user is logged on. Somebody knows a good way beyond INSTSRV / SRVANY?
|
migrated from stackoverflow.com Dec 20 '09 at 18:52
|
Assuming this documentation refers to the version you're using, it looks like natively running as a Windows service still isn't in the product and using SRVANY is your best bet. If you find that Fisheye fails and abnormally ends, SRVANY won't restart it. Non-Sucking Service Manager (NSSM) will restart it. NSSM functions as a free (public domain, I believe) replacement. You can use the command-line "sc" (in Windows XP and newer versions of Windows) to create a service in lieu of hunting down INSTSRV, as well. The syntax is described best in the command-line help for sc, which you can get by executing |
|||
|
|
|
A very good way is to use the Java Service Wrapper from Tanuki Software. An example with fisheye can be found here. |
|||
|
|
|
I use the service wrapper mentioned above, but for the sake of completeness it is worth knowing that you can run FishEye as a task in 'Task Scheduler'. I tried this technique and found it quite successful. I configured my task to run 'At Startup' and 'Every 5 minutes' with the setting 'Don't start the task if it is already running' selected. Here is an example wrapper configuration file, I'm using this with Fisheye 2.6.3 running on Windows Server 2008 R2. This file is mostly identical to the sample configuration, with a few important additions that I'll comment on at the end. #******************************************************************** # Wrapper Properties #******************************************************************** # Working Directory wrapper.working.dir=../../ # Java Application wrapper.java.command=C:\Program Files\Java\jdk1.6.0_25\bin\java.exe # Java Main class. This class must implement the WrapperListener interface # or guarantee that the WrapperManager class is initialized. Helper # classes are provided to do this for you. See the Integration section # of the documentation for details. wrapper.java.mainclass=com.cenqua.fisheye.FisheyeServiceWrapper # Java Classpath (include wrapper.jar) Add class path elements as # needed starting from 1 (add lib FIRST so that log4j config gets loaded first) wrapper.java.classpath.1=./fisheyeboot.jar wrapper.java.classpath.2=wrapper/lib/*.jar # Java Library Path (location of Wrapper.DLL or libwrapper.so) wrapper.java.library.path.1=wrapper/lib wrapper.java.library.path.2=lib/native/linux-i386 wrapper.java.library.path.3=lib/native/osx-ppc wrapper.java.library.path.4=lib/native/solaris-sparc wrapper.java.library.path.5=lib/native/win32-x86 # Java Additional Parameters wrapper.java.additional.1=-server wrapper.java.additional.2=-showversion wrapper.java.additional.3=-Djava.awt.headless=true # JDK 1.5 Additional Parameters for jmx wrapper.java.additional.4=-Dcom.sun.management.jmxremote wrapper.java.additional.5=-Dcom.sun.management.jmxremote.port=4242 wrapper.java.additional.6=-Dcom.sun.management.jmxremote.authenticate=false wrapper.java.additional.7=-Dcom.sun.management.jmxremote.ssl=false wrapper.java.additional.8=-Dcom.sun.management.jmxremote.authenticate=false wrapper.java.additional.9=-Dcom.sun.management.jmxremote.password.file=./wrapper/jmxremote.password wrapper.java.additional.10=-Dwrapper.mbean.name="wrapper:type=Java Service Wrapper Control" wrapper.java.additional.11=-Dfisheye.inst="C:\Atlassian\fecru-2.6.3\bin\.." wrapper.java.additional.12=-XX:MaxPermSize=256m wrapper.java.additional.13=-Xrs wrapper.java.additional.14=-Dfile.encoding=UTF-8 # Initial Java Heap Size (in MB) wrapper.java.initmemory=64 # Maximum Java Heap Size (in MB) wrapper.java.maxmemory=1024 # Application parameters. Add parameters as needed starting from 1 # The first application parameter is the name of the class whose main # method is to be called when the application is launched. The class # name is followed by the number of parameters to be passed to its main # method. Then comes the actual parameters. wrapper.app.parameter.1=com.cenqua.fisheye.FishEyeCtl wrapper.app.parameter.2=1 wrapper.app.parameter.3=start # The start parameters are followed by the name of the class whose main # method is to be called to stop the application. The stop class name # is followed by a flag which controls whether or not the Wrapper should # wait for all non daemon threads to complete before exiting the JVM. # The flag is followed by the number of parameters to be passed to the # stop class's main method. Finally comes the actual parameters. wrapper.app.parameter.4=com.cenqua.fisheye.FishEyeCtl wrapper.app.parameter.5=true wrapper.app.parameter.6=1 wrapper.app.parameter.7=stop #******************************************************************** # Wrapper Logging Properties #******************************************************************** # Format of output for the console. (See docs for formats) wrapper.console.format=M # Log Level for console output. (See docs for log levels) wrapper.console.loglevel=INFO # Log file to use for wrapper output logging. wrapper.logfile=var/log/wrapper.log # Format of output for the log file. (See docs for formats) wrapper.logfile.format=LPTM # Log Level for log file output. (See docs for log levels) wrapper.logfile.loglevel=INFO # Maximum size that the log file will be allowed to grow to before # the log is rolled. Size is specified in bytes. The default value # of 0, disables log rolling. May abbreviate with the 'k' (kb) or # 'm' (mb) suffix. For example: 10m = 10 megabytes. wrapper.logfile.maxsize=50m # Maximum number of rolled log files which will be allowed before old # files are deleted. The default value of 0 implies no limit. wrapper.logfile.maxfiles=10 # Log Level for sys/event log output. (See docs for log levels) wrapper.syslog.loglevel=NONE #******************************************************************** # Wrapper Windows Properties #******************************************************************** # Title to use when running as a console wrapper.console.title=Fisheye #******************************************************************** # Wrapper Windows NT/2000/XP Service Properties #******************************************************************** # WARNING - Do not modify any of these properties when an application # using this configuration file has been installed as a service. # Please uninstall the service before modifying this section. The # service can then be reinstalled. # Name of the service wrapper.ntservice.name=Fisheye # Display name of the service wrapper.ntservice.displayname=Fisheye # Description of the service wrapper.ntservice.description=Fisheye # Service dependencies. Add dependencies as needed starting from 1 wrapper.ntservice.dependency.1= # Mode in which the service is installed. AUTO_START or DEMAND_START wrapper.ntservice.starttype=AUTO_START # Allow the service to interact with the desktop. wrapper.ntservice.interactive=false Noteworthy Lines
Full path to the JDK 'hotspot' server executable. Note, download the full JDK, not just the JRE.
None of the above are shown in the Atlassian documentation, I have added these over time through trial and error. When FeCru is first started under the service wrapper, it may stop with an out of memory error, the 'MaxPermSize' line fixes that. I've also found it is necessary to specify FISHEYE_INST as shown above. I have no idea why the path is specified with
Heap memory allocations increased from the defaults - I index some fairly meaty repositories and I could afford the extra resources - you may get away with the default smaller allocations. |
||||
|
|