This documentation relates to an earlier version of FishEye.
View

Unknown macro: {spacejump}

or visit the current documentation home.

FishEye can be run as a service under Microsoft Windows.


To run FishEye as a service you can either use SRVANY and INSTSRV to run java.exe or create a Java Service Wrapper.

To install on Windows:

  1. Download wrapper.zip from here.
  2. Unzip the wrapper zip file into your FISHEYE_HOME directory (Note, the end structure should be FISHEYE_HOME\wrapper, FISHEYE_HOME\wrapper\bin, etc and NOT FISHEYE_HOME\wrapper\wrapper, FISHEYE_HOME\wrapper\wrapper/bin. The location of the wrapper directory is important).
  3. Run Fisheye-Install-NTService.bat, found in FISHEYE_HOME\wrapper\bin.
  4. Start the Fisheye service under the Windows Control Panel.
  5. Set your FISHEYE_INST within your FISHEYE_HOME\wrapper\conf\wrapper.conf as per the instructions below.

Please note, that if you do run as a service, then any Environment Variables that you want to set, need to be set in your FISHEYE_HOME\wrapper\conf\wrapper.conf file.

If you run into any problems starting the wrapper, you'll find its logs in FISHEYE_HOME\var\log\wrapper.log.

If there are other java parameters you wish to add, then you will need to add them under the additional parameters, e.g.

# 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"

For example if you wish to add a FISHEYE_INST environment variable or add the java parameter "MaxPermSize", or the -Xrs options (should be used if running FishEye as a service under Windows, to prevent the JVM closing when an interactive user logs out) then it would be something like:

wrapper.java.additional.11=-Dfisheye.inst="c:/path/to/FISHEYE_INST"
wrapper.java.additional.12=-XX:MaxPermSize=128m
wrapper.java.additional.13=-Xrs

Your memory settings can also be found in this file:

# Initial Java Heap Size (in MB)
wrapper.java.initmemory=32

# Maximum Java Heap Size (in MB)
wrapper.java.maxmemory=256

Increase these values if you have a large repository or expect to use more memory (init of 256, and a max of 1024 would be reasonable).

Wrapper Configuration and "-server" Parameter

Please note that the Wrapper configuration provided above uses the -server parameter to enable the Java HotSpotTM Server VM. This feature is only available if you use the JDK. If you use the JRE you will likely get the following error in your logs:

INFO | jvm 1 | 2010/12/20 18:19:28 | Error: no `server' JVM at `C:\Program Files\Java\jre6\bin\server\jvm.dll'.

A common issue is that customers remove the -server parameter from the wrapper.conf file. Please note that if you do this, the Wrapper script will ignore any of the following JVM parameters unless you change the sequence to start at wrapper.java.additional.1. This is an issue with the Wrapper application.

In this situation it's likely best to install and run Fisheye/Crucible with the JDK to get all the advantages of the -server functionality.

  • No labels

51 Comments

  1. Matti Kiviharju

    I am not ever get SRVANY and INSTSRV to work on my Windows Server 2003 R2 x64.. These are made for Windows Server 2003 that is older OS than R2 x64.
    wrapper.zip works always..
    ..

  2. Anonymous

    Has anybody got it working with the wrapper? I can't get it working by following instructions above.

    1. Andreas Weibel

      Yes, we got it working on a  Win Server 2003. The following steps worked:

      • Copy the wrapper folder into the FishEye directory
      • Change the log file directory in the wrapper.conf
      • Install the service with ./wrapper/bin/Fisheye-Control.bat install
      • Start the service with ./wrapper/bin/Fisheye-Control.bat start
      • If there is an error in the log, create a ./bin/server folder in your JAVA_HOME and copy the contents of ./bin/client into it. (We tested FishEye on two servers. On one server, this step was necessary, on the other, because we run different JRE/JDK on them.)
      1. Anonymous

        Thanks for your help! Worked great after I created the server folder under C:\Program Files\Java\jre6\bin and copied the jvm.dll file into it. 

      2. Anonymous

        Thnx for this

        i used about 2 hours to figure it out

  3. Mads Nissen

    If JAVA_HOME is not set on your windows system, you need to set it (to point to your jre directory), and also add the JAVA_HOME to the PATH like this:

    set PATH=%PATH%;%JAVA_HOME%\bin
    
  4. Anthony Van Alphen

    My wrapper is starting up ok but is using the userid SYSTEM when calling perforce via P4. How can I set the userid with which to run P4 functions

    1. Anonymous

      You can set the user/secure object a service runs as through the services.msc snapin, or on the command line ("sc config" gives some help).

  5. Patrick Gallagher

    Is the correct way to increase the maxpermsize using this wrapper to add a statement similar to...

    wrapper.java.additional.9=-XX:MaxPermSize=128m?

    I only ask b/c the heap settings have their own configuration statements.

    Thanks,

    1. Partha

      Yes Patrick,

      That is correct, you need to add the perm gen size like other additional JAVA parameters (as in your example).

      As you mentioned heap settings do have their own configuration, however other parameters such as perm gen size will need to be added as you have done:

      wrapper.java.additional.12=-XX:MaxPermSize=128m
      

      In fisheye/crucible 1.6.4+ you can check to see if your settings show up correctly by going to Administration > Sys Info/Support, and checking your system information next to JVM Input Arguments, which should list all of your arguments, such as Perm Gen size and memory settings etc.

      1. Anonymous

        Thanks Partha.

  6. Anonymous

    I couldn't get this to work with the wrapper service provided by users. What are you setting to the instance path in the variable example?

  7. Anonymous

    I had the same problem with the

    Error: no `server' JVM at `C:\Program Files\Java{version}\bin\server\jvm.dll'.

    Is there any way of telling the service not to use this and use the JDK of my choice instead??
    wrapper.java.additional.12=-Djava.home="path_to_real_jdk" does not work...

    //Johan

  8. Dear customers, if you have a FishEye support request please log a ticket at http://support.atlassian.com in the FishEye project.

    http://support.atlassian.com is monitored constantly by our support team and they will be better able to respond in a timely manner.

    Best Regards,


    Edwin Dawson
    Technical Writer
    edawson@atlassian.com
    ATLASSIAN - http://www.atlassian.com

  9. Rob Bunten

    wrapper.conf sensitive to missing numbers

    It appears that wrapper.java.additional entries must be numbered in order, starting from 1.

    I commented the first one out (-server) and all the rest were ignored.

  10. Charles Gutjahr

    There is a free alternative to the Java Service Wrapper that works on 64-bit Windows: it's called JavaService and is available from http://javaservice.objectweb.org/

    JavaService isn't nearly as flexible or as well-maintained as Java Service Wrapper, but it does work and it is completely free. (Only the commercial version of Java Service Wrapper supports 64-bit Windows, and my employer is a charitable foundation on a tight budget...)

    To use JavaService wrapper, you use a very similar configuration as you would put in the Java Service Wrapper's wrapper.conf – but instead you specify it on the command line. The following works for me:

    JavaService -install FishEye "C:\Program Files\Java\jre6\bin\server\jvm.dll" -Xmx1024m -XX:MaxNewSize=128m -XX:MaxPermSize=256m -Dfisheye.inst=C:\Atlassian\FishEye\Data -Djava.awt.headless=true -Djava.endorsed.dirs=C:\Atlassian\FishEye\2.1.2\lib\endorsed -Djava.class.path=C:\Atlassian\FishEye\2.1.2\fisheyeboot.jar -start com.cenqua.fisheye.FishEyeCtl -params start -stop com.cenqua.fisheye.FishEyeCtl -params stop -out C:\Atlassian\FishEye\srv-stdout.log -err C:\Atlassian\FishEye\srv-stderr.log

    1. Werner Müller

      thanks for the lavaservice link!

      it works for me on 64bit windows with fisheye/crucible :-)

  11. Anonymous

    This worked for me,

    I opened my C:\fisheye\wrapper\conf\wrapper.conf file

    Changed this line

    # Java Additional Parameters
    wrapper.java.additional.1=-server

    Into this

    # Java Additional Parameters
    #wrapper.java.additional.1=-server

    So basically, just comment that single line out and you will avoid having to copy files to you JRE /bin directory by preventing fisheye to look for the server JVM (i think).

  12. Tim

    Found the java wrapper a little buggy and even with above fix - keep crashing. Way easier this way on Windows 7:

    1. Download the Windows Server 2003 Resource Kit from Microsoft
    2. Run InstSrv <servicename> c:\path\to\resourcekit\SrvAny.exe, where you insert your own service name (without angle brackets, e.g. FishEye) and the full path to the SrvAny.exe. [ c:\instsrv.exe FishEye c:\srvany.exe ]
    3. Start --> Regedit, HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<servicename> [ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\fisheye ]
    4. Create subkey Parameters, below which you will create 2 string values:
      1. Create string value Application with the full path to <path\to\fisheye_home>\bin\run.bat [ c:\fisheye_home\bin\run.bat ]
      2. Create string value AppParameters with path and whatever port you want e.g. <path\to\fisheye_home>\bin\run.bat --port 8060 [ c:\fisheye_home\bin\run.bat --port 8060 ]
    5. Start --> Services.msc, Find "Fisheye" and hit Start_ [or use cmd and hit c:\net start fisheye]_
    6. Get Beer
    1. Anonymous

      I followed your instructions above for Windows 2008, however I cannot get the service to start or at least start running. It starts then stops.  I believe it has to do with the parameters.  Because when I run services.msc then proceed to the FishEye Service and modify the parameters there it starts but it does not retain the parameters.

      Any ideas?

      Thx

    2. AW

      For Server 2008, you may want to follow this article as well http://confluence.atlassian.com/pages/viewpage.action?pageId=91554194

      I did not have to add the second string value mentioned here by Tim that includes the port number.  My registry key paths were:

      • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Fisheye after I ran the "srvany.exe"
      • Then I added HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Fisheye\Parameters onto that where my string value for "Application" was pointed to the <fisheye_home>\bin\start.bat

      After that, all running well.  The wrapper didn't work for me b/c of this documented issue where Fisheye wrapper isn't compatible with certain JDK versions http://jira.atlassian.com/browse/FE-2678

      1. Neil Wheeler

        Thanks this worked for me.

  13. Niels Bos

    I had a problem that I solved with the wrapper.zip on Windows 2008 R2 x64 64bit with only Java 64 bits installed. It took me quite a while to figure out, not being a Java guru, so I added the solution here for others.

    NOTE: I also mixed up the INST and HOME dirs, so just in case you attention while reading is as poor as me: HOME is the dir with all executables. INST dir is the data dir.

    NOTE: Also, as mentioned above, do set the log folder in your "wrapper/conf/wrapper.conf" file to see what is going on!

    Syptoms as shown in wrapper.log:

    STATUS | wrapper  | 2011/02/24 14:35:57 | --> Wrapper Started as Service
    STATUS | wrapper  | 2011/02/24 14:35:58 | Launching a JVM...
    FATAL  | wrapper  | 2011/02/24 14:35:58 | Unable to execute Java command.  The system cannot find the file specified. (0x2)
    FATAL  | wrapper  | 2011/02/24 14:35:58 |     "java" -server -showversion -Djava.awt.headless=true -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=4242 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.password.file=./wrapper/jmxremote.password -Dwrapper.mbean.name="wrapper:type=Java Service Wrapper Control" -Dfisheye.inst="E:/Atlassian/FISHEYE_CRUCIBLE" -XX:MaxPermSize=512m -Xrs -Xms32m -Xmx512m -Djava.library.path="wrapper/lib;lib/native/linux-i386;lib/native/osx-ppc;lib/native/solaris-sparc;lib/native/win32-x86" -classpath "./fisheyeboot.jar;wrapper/lib/fisheye-wrapper-jmx.jar;wrapper/lib/wrapper.jar" -Dwrapper.key="xe8JsVP_XWb0M58h" -Dwrapper.port=32000 -Dwrapper.use_system_time="TRUE" -Dwrapper.version="3.1.2" -Dwrapper.native_library="wrapper" -Dwrapper.service="TRUE" -Dwrapper.cpu.timeout="10" -Dwrapper.jvmid=1 com.cenqua.fisheye.FisheyeServiceWrapper com.cenqua.fisheye.FishEyeCtl 1 start com.cenqua.fisheye.FishEyeCtl true 1 stop
    FATAL  | wrapper  | 2011/02/24 14:35:58 | Critical error: wait for JVM process failed

    Solution:

    In your "wrapper/conf/wrapper.conf" the line wrapper.java.command=java is causing this behavior, even if you have your JAVA_HOME set correctly. Change this to the full java.exe path, like so:

    wrapper.java.command=C:/Program Files/Java/jdk1.6.0_17/jre/bin/java.exe

    (obviously, your path may differ from mine)

    I hope this does the trick for you as well. Good hunting!

    1. Anselm McClain

      Thanks for this tip! Worked for me as well. I was able to use:

      wrapper.java.command=%JAVA_HOME%/bin/java.exe
      
      

      That might work for you and be more robust.   - ATM

      1. Chad Beaudin

        Perfect.  Thanks guys.  This fixed me right up.

      2. Anonymous

        Thank you sir!

      3. Anonymous

        Worked for me too!! Thanks for posting the solution.

      4. Yossi Zinger

        Worked like a charm!

    2. Anonymous

      Works perfect for me on 2008 R2 32 bits

    3. Anonymous

      Yes, changing the Java command path was definitely part of it.  Thanks for the tip.  The other thing that helped me was running the Command Prompt as an Admin... worked perfectly.  My set up is Server 2008 R2 64 bit

    4. Anonymous

      Thank you!  Very nicely done!

  14. Niraj MS Shrestha

    Newbie in the house. Can anyone please suggest me Windows requirements (Windows version recommendation) for installing Fisheye and Crucible and their prerequisites and step by step instructions would be greatly appreciated.

    Thank you very much in advance..

  15. Anonymous

    Yeah, this no Windows service included is kind of a joke. Now I have to go back to get the 64-bit wrapper approved for purchase...

    For an updated summary for those wondering, this appears to be my thoughts:

    Windows Server 2k8 R2 64-bit

    - Instsrv not supported by Microsoft on this playform with srvany AFAIK, yes you could probably install and old 2k3 version, but is it supported, no.

    - 64-bit wrapper seems the only viable "clean" option, but is purchase only, apparently need to go back to request more money to purchase after already going through hoops to purchase crucible and fisheye. I'd expect I'd have included what is needed to run as a Windows service, apparently not.

    - javaservice alternative hasn't been updated since circa 2006

    - standalone sc isn't exactly great for controlling/servicing/error detection etc Java apps.

    - Linux service wrapper for 64-bit is free, maybe we use that instead. The best option yet.

    1. I, too have been annoyed as all heck at the lack of support for a service wrapper in 64 bit windows. So, I spent this evening trying to figure this out. I've used another java service wrapper called "YAJSW" - yet another java service wrapper. It's very similar to the tanuki wrapper, except it's free under the LGPL license. YAJSW is currently an active project, and if you look at the update history it's fairly mature, supports multiple os platforms, and has a lot of nice features, like bulk deployments and a system control tray that allows you to watch logs, control the service, and perform thread dumps, among other things.

      I'll describe the configuration I used, and include a sample wrapper file that works on my system. Use and improve, please!

      My configuration, which is directly tied to the wrapper.conf that I am attaching:

      • x64 JAVA JDK+JRE, configured environment variables JAVA_HOME=c:\java\jre\bin
      • Windows Server 2008 x64, 12gb ram, 4 processors
      • Fisheye + Crucible 2.5.4
      • JVM Heap size: 8192 MB
      • JVM MaxPermSize: 128m
      • Installed directory: c:\crucible
      • yajsw-beta-10.6.zip

      How to make it work:

      1. Ensure FE+CRU works and runs from the console by running the "run.bat" file in c:\crucible\bin
      2. Download yajsw and unzip the root of yajsw download package into \crucible\wrapper. This means that \bat, \conf, \doc, etc all live within c:\crucible\wrapper.
      3. Copy the quoted configuration (I can't attach files to this confluence page) and save it in c:\crucible\wrapper\conf\wrapper.conf
      4. Test the wrapper system by running c:\crucible\wrapper\bat\runConsole.bat. This will run the wrapper in the console and let you quickly diagnose problems with the wrapper configuration on your system.
      5. Once the service appears to run correctly, stop the console instance of the wrapper, and run c:\crucible\wrapper\bat\installService.bat
      6. from the console, sc start fecru (the service name defined in wrapper.conf) and now FE+CRU is running as wrapped java service, complete with logging, system tray control, and ability to attach jmx and do all that fun java stuff.

      Please note that all logs for fe+cru and the wrapper will live in c:\crucible\var\log\

      Let me know if this works for you.

      wrapper.conf

      # WARNING - Do not modify any of the properties when an application
      #  using this configuration file has been installed as a service or daemon.
      #  Please uninstall the service before modifying this file.  The
      #  service must then be reinstalled.
      
      #********************************************************************
      # Java Executable Properties
      #********************************************************************
      # Java Application
      #wrapper.java.command=java
      
      # or define conditions for YAJSW searching for a JVM
      # currently only valid for windows
      #wrapper.java.command.minVersion=1.5
      #wrapper.java.command.maxVersion=1.6
      #wrapper.java.command.jreOnly=true
      #wrapper.java.command.jdkOnly=true
      #wrapper.java.command.preferJre=true
      #wrapper.java.command.preferJdk=true
      #wrapper.java.command.javaw=true
      
      # copy java.exe to <tmp>/java_<customProcName>_nnnn.exe
      #wrapper.java.customProcName=
      
      #********************************************************************
      # working directory
      #********************************************************************
      wrapper.working.dir=c:/crucible/wrapper/
      
      # Java Main class.
      # YAJSW: default is "org.rzo.yajsw.app.WrapperJVMMain"
      # DO NOT SET THIS PROPERTY UNLESS YOU HAVE YOUR OWN IMPLEMENTATION
      # wrapper.java.mainclass=
      
      #********************************************************************
      # Application main class or native executable
      # One of the following properties MUST be defined
      #********************************************************************
      
      # Java Application main class
      wrapper.java.app.mainclass=com.cenqua.fisheye.FisheyeServiceWrapper
      
      
      #********************************************************************
      # Application process cpu priority and affinity
      #********************************************************************
      
      # Process priority: LOW, BELOW_NORMAL, NORMAL, ABOVE_NORMAL, HIGH
      #wrapper.priority
      
      # CPU affinity of the process. this is a bit-array representing the cpus
      #wrapper.affinity=
      
      
      #********************************************************************
      # Application Account
      # Equivalent to Posix sudo or windows runas
      # Note Posix:
      #     <group>\<user> (note: use \\ in configuration file).
      #     If no group is configured default group of the user is used
      #********************************************************************
      #wrapper.app.account=
      #wrapper.app.password=
      
      #********************************************************************
      # Java/Groovy Application Properties
      #********************************************************************
      
      wrapper.java.app.jar = c:/crucible/fisheyeboot.jar
      wrapper.java.command = java.exe
      
      wrapper.java.classpath.1 = c:/crucible/fisheyeboot.jar
      wrapper.java.classpath.2 = c:/crucible/lib/*
      wrapper.java.classpath.3 = c:/crucible/lib/svn/*
      wrapper.java.classpath.4 = c:/crucible/config.xml
      
      wrapper.app.parameter.1 = run
      # Java Additional Parameters
      wrapper.java.additional.1 = -Xmx8192m
      wrapper.java.additional.2 = -Xms2048m
      wrapper.java.additional.3 = -XX:MaxPermSize=1024m
      wrapper.java.additional.4 = -Dfile.encoding=UTF-8
      wrapper.java.additional.5 = -Dfisheye.library.path=
      wrapper.java.additional.6 = -Djava.awt.headless=true
      wrapper.java.additional.7 = -Dfisheye.inst=c:/crucible
      wrapper.java.additional.8 = -Djava.endorsed.dirs=c:/crucible/lib/endorsed
      
      
      # Java Library Path
      # YAJSW: required dll are encapsulated in jar files -> only library path of your application required
      # wrapper.java.library.path.1=
      
      
      # Initial Java Heap Size (in MB)
      # alternative for wrapper.java.additional.<n>=-Xms
      #wrapper.java.initmemory=3
      
      
      # % of total RAM
      #wrapper.java.initmemory.realtive=10
      
      
      # Maximum Java Heap Size (in MB)
      # alternative for wrapper.java.additional.<n>=-Xmx
      #wrapper.java.maxmemory=64
      
      # % of total RAM
      #wrapper.java.maxmemory.realtive=30
      
      # JSW requires that main class is set as app.parameter property
      # YAJSW: to specify the main class please use wrapper.java.app.mainclass=
      
      #********************************************************************
      # Application environment properties.
      #********************************************************************
      # Adds an environment to the application
      #wrapper.app.env.<key>=<value>
      
      #********************************************************************
      # 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=c:/crucible/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
      
      #********************************************************************
      # Application Console Properties
      #********************************************************************
      # Indicate if console of the application is visible.
      #wrapper.console.visible=false
      
      # Title to use when running as a console
      wrapper.console.title=Atlassian Fisheye + Crucible
      
      #********************************************************************
      # Wrapper Windows Service and Posix Daemon Properties
      #********************************************************************
      # Name of the service
      wrapper.ntservice.name=fecru
      
      # Display name of the service
      wrapper.ntservice.displayname=Fisheye + Crucible
      
      # Description of the service
      wrapper.ntservice.description=Atlassian Fisheye + Crucible
      
      # 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
      
      # wrapper service user. only for windows. on *nix system this is root.
      # see also wrapper.app.account
      #wrapper.ntservice.account=
      #wrapper.ntservice.user=
      
      #********************************************************************
      # Wrapper System Tray Properties
      #********************************************************************
      # enable system tray
      wrapper.tray = true
      
      # TCP/IP port. If none is defined multicast discovery is used to find the port
      # Set the port in case multicast is not possible.
      wrapper.tray.port = 15002
      
      # icon file to use, per default a console icon is used
      #wrapper.tray.icon=
      
      #********************************************************************
      # Exit Code Properties
      # Restart on non zero exit code
      #********************************************************************
      wrapper.on_exit.0=SHUTDOWN
      wrapper.on_exit.default=RESTART
      
      #********************************************************************
      # Trigger actions on console output
      #********************************************************************
      # On Exception show message in system tray
      wrapper.filter.trigger.0=Exception
      wrapper.filter.script.0=scripts\/trayMessage.gv
      wrapper.filter.script.0.args=Exception
      
      #********************************************************************
      # Wrapper JMX
      #
      # connect using for example jconsole per remote access using the url
      #
      # service:jmx:rmi:///jndi/rmi://localhost:1099/server
      #
      # eventl. change port and server name
      #********************************************************************
      # Enable wrapper JMX
      #wrapper.jmx = true
      
      # JMX RMI port. default is 1099
      #wrapper.jmx.rmi.port =
      
      # JMX RMI credentials
      # mandatory if accessing from remote server
      #wrapper.jmx.rmi.user =
      #wrapper.jmx.rmi.password =
      
      #********************************************************************
      # Wrapper timeouts
      #********************************************************************
      # Number of seconds to allow between the time that the Wrapper starts the application
      # and the  application logon to the wrapper.
      # Default: 30 seconds
      #wrapper.startup.timeout =
      
      # Number of seconds to allow between the time that the Wrapper asks the application to shutdown and the time that the JVM shuts down.
      # Default: 30 seconds
      #wrapper.shutdown.timeout =
      
      # Number of seconds the wrapper waits for a ping message from the java application.
      # If no heart beat is received within a timeout the wrapper assumes that the application
      # is non responsive and will restart it.
      # Default: 30 seconds
      #wrapper.ping.timeout =
      
      1. Anonymous

        This worked for me using Fisheye + Crucible 2.6. The new _YAJSW_ 10.7 beta would not work for me (not sure why), after using _YAJSW_ 10.6 beta everything just worked!

      2. Neil Wheeler

        Thanks.

        This worked for me (after I got the config right using getConfig.bat). Any ideas how I can delay the start? It seems fecru is trying to start before SQL and failing.

  16. Anonymous

    I'm currently using the wrapper to run Fisheye as a windows service, and have built a free system tray that is downloadable from here;

    http://www.webspecdevit.co.uk/downloads/Systrays/

  17. Anonymous

    Have just released a system tray for the JIRA windows service and can be obtained here :

    http://www.webspecdevit.co.uk/downloads/Systrays/

    1. Anonymous

      Both the FishEye and JIRA System trays for windows service can be found at:

      http://www.wsit.me.uk/downloads/Systrays/

  18. Felix Petriconi

    After an upgrade from Windows Sever 2003 to Windows Server 2008 R2 we had severe problems in getting Fisheye back to work. We got messages like the following during trying to edit a review item:

    Error
     SyntaxError: at index 1: expected expression, got '<': <anonymous function>([arguments not available])
    @http://<server>/fisheye/static/lom0i4/concat.crucible.45c2df884eab0b678673b6c36fd4a8cc.cache.js:4323 <anonymous function>
    ([arguments not available])@http://<server>/fisheye/static/lom0i4/concat.crucible.45c2df884eab0b678673b6c36fd4a8cc.cache.js:4120
    <anonymous function: resolveWith>([arguments not available])@http://<server>/fisheye/static/lom0i4/concat.aui.db1a18383a51fb9bd8a49ae60360fba2.cache.js:48 v([arguments not available])
    @http://<server>/fisheye/static/lom0i4/concat.aui.db1a18383a51fb9bd8a49ae60360fba2.cache.js:48 <anonymous function: c>([arguments not available])
    @http://<server>/fisheye/static/lom0i4/concat.aui.db1a18383a51fb9bd8a49ae60360fba2.cache.js:48
     Error 2
     SyntaxError: at index 1: expected expression, got '<': <anonymous function>([arguments not available])
    @http://<server>/fisheye/static/lom0i4/concat.crucible.45c2df884eab0b678673b6c36fd4a8cc.cache.js:4323
    <anonymous function: FECRU.AJAX.ajaxUpdate>([arguments not available])
    @http://<server>/fisheye/static/lom0i4/concat.crucible.45c2df884eab0b678673b6c36fd4a8cc.cache.js:4061
     <anonymous function: resolveWith>([arguments not available])@http://<server>/fisheye/static/lom0i4/concat.aui.db1a18383a51fb9bd8a49ae60360fba2.cache.js:48 v([arguments not available])
    @http://<server>/fisheye/static/lom0i4/concat.aui.db1a18383a51fb9bd8a49ae60360fba2.cache.js:48 <anonymous function: c>([arguments not available])
    @http://<server>/fisheye/static/lom0i4/concat.aui.db1a18383a51fb9bd8a49ae60360fba2.cache.js:48
    

     On our server we are routing Fisheye through an IIS 7.0 instance with the isapi_redirect.dll. The IIS 7.0 has a security setting that prevents "double escaping". There is a Jira documentation that solves the problem of having spaces in attachment file names in Jira. With the instructions in the provided MSDN link I was was able to solve on one hand our problem with the spaces in the Jira attachments and as well it solved our Fisheye problem.

    1. Hi there Felix,

      Unfortunately, I'm not able to help with your particular request.

      I would ask that you open a support request at http://support.atlassian.com, where our support engineers will be able to get back to you quickly.

      Alternatively you could post a question on Atlassian Answers.

      I hope this helps.

      Best Regards,

      Edwin Dawson
      Technical Writing Team Leader
      Atlassian
      http://www.atlassian.com

      1. Felix Petriconi

        Hi Edwin,

        it seems to me that I did I not make my point clear, that I am offering a solution for a problem and not requesting assistance ;-)

        I rephrased my posting a bit.  

        Regards, Felix 

  19. Anonymous

    Hi,

    I just spent the better part of the day installing this on Windows Server 2008 x64. I tried most of the solutions here and nothing worked. So this is what actually worked for me... In hopes that it helps someone.

    1. Install JDK 1.6.0_27 (32 Bit Version, installation folder is where your JAVA_HOME will be set)

    1. Download http://wrapper.tanukisoftware.com/download/3.5.10/wrapper-windows-x86-32-3.5.10.zip (the community version)

    2. Extract the zip to your fisheye installation directory FISHEYE_HOME\wrapper (in my case C:\fisheye2.6.5\wrapper)

    3. Create the FISHEYE_HOME\wrapper\conf\wrapper.conf file which will hold all of your settings (Copy the sample conf file below)

    4. Edit your conf file, set.JAVA_HOME=the\location\of\your\32\bit\jdk in my case (C:\Progra~2\Java\jdk1.6.0_27)

    5. From CMD prompt navigate to FISHEYE_HOME\wrapper\bin (make sure that you run CMD as administrator, right click > run as administrator)

    6. From CMD prompt run TestWrapper.bat, this will start your fisheye server using the wrapper... the service should stay up once you have everything configured correctly.. you should also be able to navigate to the we server (in my case http://localhost:8060)

    7. From CMD end the service using ctrl + c (not the best thing but we were just testing anyway)

    8. From CMD propt run InstallTestWrapper-NT.bat ... this will install your wrapper as a service ... so now you just have to run it from your services admin interface

    I hope it helps.

    SteveW

    wrapper.conf

    #encoding=UTF-8
    # Configuration files must begin with a line specifying the encoding
    #  of the the file.

    wrapper.working.dir=../../

    #********************************************************************
    # Wrapper License Properties (Ignored by Community Edition)
    #********************************************************************
    # Professional and Standard Editions of the Wrapper require a valid
    #  License Key to start.  Licenses can be purchased or a trial license
    #  requested on the following pages:
    # http://wrapper.tanukisoftware.com/purchase
    # http://wrapper.tanukisoftware.com/trial

    # Include file problems can be debugged by removing the first '#'
    #  from the following line:
    ##include.debug

    # The Wrapper will look for either of the following optional files for a
    #  valid License Key.  License Key properties can optionally be included
    #  directly in this configuration file.
    #include ../conf/wrapper-license.conf
    #include ../conf/wrapper-license-%WRAPPER_HOST_NAME%.conf

    # The following property will output information about which License Key(s)
    #  are being found, and can aid in resolving any licensing problems.
    #wrapper.license.debug=TRUE

    #********************************************************************
    # Wrapper Localization
    #********************************************************************
    # Specify the locale which the Wrapper should use.  By default the system
    #  locale is used.
    #wrapper.lang=en_US # en_US or ja_JP

    # Specify the location of the Wrapper's language resources.  If these are
    #  missing, the Wrapper will default to the en_US locale.
    wrapper.lang.folder=../lang

    #********************************************************************
    # Wrapper Java Properties
    #********************************************************************
    # Java Application
    #  Locate the java binary on the system PATH:
    #wrapper.java.command=java
    #  Specify a specific java binary:
    #needs to be the 32 bit jvm
    set.JAVA_HOME=C:\Progra~2\Java\jdk1.6.0_27
    wrapper.java.command=%JAVA_HOME%/bin/java

    # Tell the Wrapper to log the full generated Java command line.
    wrapper.java.command.loglevel=INFO

    # 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=org.tanukisoftware.wrapper.WrapperSimpleApp

    # Java Classpath (include wrapper.jar)  Add class path elements as
    #  needed starting from 1
    wrapper.java.classpath.1=./fisheyeboot.jar
    wrapper.java.classpath.2=./wrapper/lib/wrapper.jar

    # Java Library Path (location of Wrapper.DLL or libwrapper.so)
    wrapper.java.library.path.1=./wrapper/lib
    wrapper.java.library.path.2=./lib
    wrapper.java.library.path.3=./lib/*
    wrapper.java.library.path.4=./lib/svn/*

    # Java Bits.  On applicable platforms, tells the JVM to run in 32 or 64-bit mode.
    wrapper.java.additional.auto_bits=TRUE

    # Java Additional Parameters
    #wrapper.java.additional.1=

    wrapper.java.additional.1 = -Xmx2048m
    wrapper.java.additional.2 = -Xms256m
    wrapper.java.additional.3 = -XX:MaxPermSize=1024m
    wrapper.java.additional.4 = -Dfile.encoding=UTF-8
    wrapper.java.additional.5 = -Dfisheye.library.path=
    wrapper.java.additional.6 = -Djava.awt.headless=true
    wrapper.java.additional.7 = -Dfisheye.inst=c:/fisheye2.6.5
    wrapper.java.additional.8 = -Djava.endorsed.dirs=c:/fisheye2.6.5/lib/endorsed
    wrapper.java.additional.9 = -server
    wrapper.java.additional.10= -showversion
    wrapper.java.additional.11= -Djava.awt.headless=true

    # Initial Java Heap Size (in MB)
    wrapper.java.initmemory=128

    # Maximum Java Heap Size (in MB)
    wrapper.java.maxmemory=512

    # Application parameters.  Add parameters as needed starting from 1
    #wrapper.app.parameter.1=
    wrapper.app.parameter.1=com.cenqua.fisheye.FishEyeCtl
    #wrapper.app.parameter.2=1
    wrapper.app.parameter.2=start

    #********************************************************************
    # Wrapper Logging Properties
    #********************************************************************
    # Enables Debug output from the Wrapper.
    # wrapper.debug=TRUE

    # Format of output for the console.  (See docs for formats)
    wrapper.console.format=PM

    # Log Level for console output.  (See docs for log levels)
    wrapper.console.loglevel=INFO

    # Log file to use for wrapper output logging.
    wrapper.logfile=./wrapper/logs/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=0

    # 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=0

    # Log Level for sys/event log output.  (See docs for log levels)
    wrapper.syslog.loglevel=NONE

    #********************************************************************
    # Wrapper General Properties
    #********************************************************************
    # Allow for the use of non-contiguous numbered properties
    wrapper.ignore_sequence_gaps=TRUE

    # Title to use when running as a console
    wrapper.console.title=Test Wrapper Sample Application

    #********************************************************************
    # Wrapper JVM Checks
    #********************************************************************
    # Detect DeadLocked Threads in the JVM. (Requires Standard Edition)
    wrapper.check.deadlock=TRUE
    wrapper.check.deadlock.interval=10
    wrapper.max_failed_invocations=99
    wrapper.console.fatal_to_stderr=FALSE
    wrapper.console.error_to_stderr=FALSE
    wrapper.check.deadlock.action=RESTART
    wrapper.check.deadlock.output=FULL

    # Out Of Memory detection.
    # (Simple match)
    wrapper.filter.trigger.1000=java.lang.OutOfMemoryError
    # (Only match text in stack traces if -XX:+PrintClassHistogram is being used.)
    #wrapper.filter.trigger.1000=Exception in thread "*" java.lang.OutOfMemoryError
    #wrapper.filter.allow_wildcards.1000=TRUE
    wrapper.filter.action.1000=RESTART
    wrapper.filter.message.1000=The JVM has run out of memory.

    #********************************************************************
    # Wrapper Email Notifications. (Requires Professional Edition)
    #********************************************************************
    # Common Event Email settings.
    #wrapper.event.default.email.debug=TRUE
    #wrapper.event.default.email.smtp.host=<SMTP_Host>
    #wrapper.event.default.email.smtp.port=25
    #wrapper.event.default.email.subject=[%WRAPPER_HOSTNAME%:%WRAPPER_NAME%:%WRAPPER_EVENT_NAME%] Event Notification
    #wrapper.event.default.email.sender=<Sender email>
    #wrapper.event.default.email.recipient=<Recipient email>

    # Configure the log attached to event emails.
    #wrapper.event.default.email.attach_log=TRUE
    #wrapper.event.default.email.maillog.lines=50
    #wrapper.event.default.email.maillog.format=LPTM
    #wrapper.event.default.email.maillog.loglevel=INFO

    # Enable specific event emails.
    #wrapper.event.wrapper_start.email=TRUE
    #wrapper.event.jvm_prelaunch.email=TRUE
    #wrapper.event.jvm_start.email=TRUE
    #wrapper.event.jvm_started.email=TRUE
    #wrapper.event.jvm_deadlock.email=TRUE
    #wrapper.event.jvm_stop.email=TRUE
    #wrapper.event.jvm_stopped.email=TRUE
    #wrapper.event.jvm_restart.email=TRUE
    #wrapper.event.jvm_failed_invocation.email=TRUE
    #wrapper.event.jvm_max_failed_invocations.email=TRUE
    #wrapper.event.jvm_kill.email=TRUE
    #wrapper.event.jvm_killed.email=TRUE
    #wrapper.event.jvm_unexpected_exit.email=TRUE
    #wrapper.event.wrapper_stop.email=TRUE

    # Specify custom mail content
    wrapper.event.jvm_restart.email.body=The JVM was restarted.\n\nPlease check on its status.\n

    #********************************************************************
    # 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.name=Atlassian Fisheye

    # Display name of the service
    wrapper.displayname=Atlassian Fisheye

    # Description of the service
    wrapper.description=Fisheye SVN Integration Service

    # Service dependencies.  Add dependencies as needed starting from 1
    wrapper.ntservice.dependency.1=

    # Mode in which the service is installed.  AUTO_START, DELAY_START or DEMAND_START
    wrapper.ntservice.starttype=AUTO_START

    # Allow the service to interact with the desktop.
    wrapper.ntservice.interactive=false

  20. Anonymous

    Wow what a mess.

    "In this situation it's likely best to install and run Fisheye/Crucible with the JDK to get all the advantages of the -server functionality."

    After struggling an hour or two I figured out that for some reason JDK 1.7 wasn't happening.  I thought this was supported according to system requirements, but maybe the wrapper is the problem.  I don't know.  Using JDK 1.6 (update 27) worked.

    I really like Atlassian software and use Jira, Bamboo, and GreenHopper.  Fisheye is by far the hardest installation and for the last few hours I've been questioning why this is going to be so much cooler than the subversion plugin.  Please make some of the installation basics easier - configuring a service on NT platform should not be so hard.

    1. Sten Pittet

      Hi,

      I'm sorry to read about the problem you ran into. I've opened a support case to investigate this issue.

      Regards,

      Sten Pittet
      FishEye / Crucible Product Manager

    2. Adam Ahmed

      Hello there!

      I took a look into this after Sten told me about the problem, but I wasn't able to reproduce any errors setting up the wrapper with the 1.7 JDK on Windows Server 2008 R2.

      I did find that the memory parameters for the JVM were a little outdated (but this wasn't 1.7-specific), so I've uploaded a new wrapper.zip with larger defaults for those parameters.

      If you're still having trouble with the wrapper using JDK 1.7, I urge you to open a support request with some more details on the errors you're hitting.  We'd be happy to help!

      Cheers,
      Adam

  21. Anonymous

    A few of our customers use our commercial application (AlwaysUp) to run FishEye as a Windows Service so we have created a step-by-step tutorial to guide them through the setup process:

    http://www.coretechnologies.com/products/AlwaysUp/Apps/RunFishEyeAsAService.html

  22. Anonymous

    After dealing with a lot of trouble, I get into this... which is still trouble... why is so hard to configure this as a service!?!

    INFO  - FishEye arguments: []

    INFO   | jvm 1    | 2011/11/04 07:52:54 | FishEye not running? Problem connecting to 127.0.0.1:8059 : Connection refused: connect

    INFO   | jvm 1    | 2011/11/04 07:52:54 | java.net.ConnectException: Connection refused: connect

    INFO   | jvm 1    | 2011/11/04 07:52:54 |     at java.net.PlainSocketImpl.socketConnect(Native Method)

     

  23. Anonymous

    Considering the number of comments on this and the difficulty i'm having setting it up I really don't want to fork out $2200 for a licence. This documentation / installation is a joke!

  24. Anonymous

    I dont say this often at all, but going through these instructions and trying each one I'm left with the opinion that its easier to get it working on Linux or Mac, so best to skip installing it on Microsoft.

    I've tried several solutions above and I am no wiser or better off.  I dont use the term often, but it applies to this whole process.  The whole idea of running Atlassian Fisheye is a cluster f**k.

    The whole set of documentation for Atlassian Fisheye needs to be re-written starting with the Install documentation and then this page here. 

    This has been a giant waste of a day...

  25. Anonymous

    Why does every other product come with a install as a service bat file and now this? This is unreal