FishEye 可以通过 Java Service Wrapper 作为Windows服务启动

这个服务包有以下优势:

  • 允许 FishEye作为 Windows 服务启动.
  • 无需用户登录系统, 或命令行启动 FishEye.
  • 可以将 FishEye 作为后台服务运行, 提供系统性能和安全性
  • 系统启动时自动运行FishEye而无需用户登录
  • 用户无法停止、启动 或篡改FishEye参数,只有管理员才能操作
  • 提供错误恢复, 以及分析功能

(警告) 请注意:

  • 本页面内容需要结合 在Windows上安装FishEye
  • 你需要在32位Java环境运行这个java Service Wrapper, 即使是运行在64位机器上。
  • 最好使用JDK而不是JRE, 来调用 -server 参数

本页面内容:

相关页面:

安装 Java Service Wrapper

要在Windows上安装 Java Service Wrapper:

  1. 点击 here 下载wrapper.zip
  2. 解压文件到 <FishEye home directory> (即FishEye安装路径). 注意,最后文件夹结构应该为 <FishEye home directory>\wrapper 或  <FishEye home directory>\wrapper\bin, 等,而不是 <FishEye home directory>\wrapper\wrapper 或 <FishEye home directory>\wrapper\wrapper\bin. wrapper 路径结构非常重要
  3. 编辑 <FishEye home directory>\wrapper\conf\wrapper.conf 文件,配置JDK路径,找到:

    # Java Application
    wrapper.java.command=java

    并替换为下面的内容,并注释掉不需要的参数:

    # Java Application
     
    # Option 1: If you have JAVA_HOME defined in your Windows system environment variables (for example, if JAVA_HOME is defined as C:/Java/bin, then you can use:
    wrapper.java.command=%JAVA_HOME%/java 
     
    # Option 2: If you have multiple JDKs installed, and you don't want to use a Windows environment variable to specify which one to use, provide the absolute path to where the JDK is installed (e.g. C:/Java/jdk1.7.0_05/bin/java):
    wrapper.java.command=C:/<path to Java location>/bin/java
    

    在wrapper.conf 文件中添加下面的内容,以便于在wrapper 日志中检查Java JDK是否配置正确:

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

    日志文件在: <FishEye home directory>\var\log\wrapper.log.

     

  4. 在 <FishEye home directory>\wrapper\conf\wrapper.conf 文件中配置 FISHEYE_INST 环境变量, following the instructions below.
  5. 按照下面步骤安装:
    1. 点击 '开始' 菜单,并搜索 'cmd',右键点击命令窗口,选择 以管理员身份运行
    2. 切换到 <FishEye home directory>\wrapper\bin 目录,并运行 Fisheye-Install-NTService.bat. 如果在启动 wrapper 过程中出现错误, 你可以在 <FishEye home directory>\var\log\wrapper.log 中分析错误原因。
  6. 在Windows 控制面板 - 服务 中启动 FishEye 服务; 

(信息) 请注意:

为Windows 服务设置FishEye环境变量

请注意, 如果你把 FishEye 作为 Windows 服务运行, 任何FishEye 特定的环境变量必须在 <FishEye home directory>\wrapper\conf\wrapper.conf 文件中设置。

如果在启动 wrapper 过程中出现错误, 你可以在 <FishEye home directory>\var\log\wrapper.log 中分析错误原因。

如果需要添加其他Java参数, 那么你需要将这些参数添加到下面这段配置中,例如

# JDK 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.password.file=./wrapper/jmxremote.password
wrapper.java.additional.9=-Dwrapper.mbean.name="wrapper:type=Java Service Wrapper Control"

wrapper.java.additional.10=-XX:PermSize=256m

要添加 FISHEYE_INST 环境变量,  Java MaxPermSize 参数, 或 -Xrs 参数, 按照下面的写法:

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

注意 -Xrs 参数是用在Windows服务运行FishEye时使用的,用来防止用户注销导致JVM关闭。

内存配置也可以在这个文件中找到:

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

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

如果有大量的源代码库,你可以考虑提升内存 (默认初始 256, 最大 1024 ).

Fisheye/Crucible 1.6.4 以及更高版本, 你可以在System Settings - System info 中检查JVM参数

故障处理

从 wrapper.zip 解压文件

一些客户报告运行  wrapper时发生错误. 可能是由于以下原因导致的:

使用64位 Java JDK 的警告

当使用 64 Java JDK 运行 本文档中下载的wrapper时,你可能会在 wrapper.log 中看到下面的警告信息:

WARNING - Unable to load the Wrapper's native library 'wrapper.dll'. The file is located on the path at the following location but could not be loaded: C:\installs\service\fisheye28\wrapper\lib\wrapper.dll.

Please verify that the file is readable by the current user and that the file has not been corrupted in any way. System signals will not be handled correctly.

这是由于使用了 64位 JDK (即使是运行在 64位机器上). 将JDK更换为32位,就可以防止出现上述警告信息. 

Wrapper 配置 "-server" 参数

请注意wrapper 配置可以使用 -server 参数来启用 Java HotSpot(TM) Server VM. 这个特性仅当你使用JDK时可用. 如果你使用 JRE 你会在日志中看到如下错误:

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

如果你从 wrapper.conf 文件中移除这个-server参数 ,wrapper 脚本会忽略文件中任何后续的 JVM 参数,除非你更改顺序从 wrapper.java.additional.1 开始启动. 这是wrapper的缺陷。

在这种情况下,最好将FishEye/Crucible安装在JDK中,并使用 -server. 你也可以在wrapper.conf中强制 wrapper 使用指定路径的JDK thewrapper.conf。参见文档前面的说明。