根据官方安装指南,Fisheye是在命令行中启动的,不适用于没有用户login的服务器环境。 有人知道超越INSTSRV / SRVANY的好方法吗?
假设这个文档指的是你使用的版本,它看起来像本地运行,因为Windows服务仍然不在产品中,使用SRVANY是最好的select。
如果您发现鱼眼失败并exception结束,SRVANY将不会重新启动。 非吸收服务pipe理器 (NSSM)将重启它。 NSSM作为一个免费(公共领域,我相信)替代function。
您可以使用命令行“sc”(在Windows XP和更新版本的Windows中)创build一个服务来代替searchINSTSRV。 在sc的命令行帮助中描述了最好的语法,您可以通过执行sc create /?来获得该语法sc create /? 。 “sc”有一个奇怪的命令行语法 – 一定要在等号后加空格(即“binPath = c:…”)。
一个很好的方法是使用Tanuki Software的Java Service Wrapper。 鱼眼的例子可以在这里find。
我使用上面提到的服务包装,但为了完整起见,值得知道的是,您可以在“任务计划程序”中运行FishEye作为任务。 我尝试了这种技术,发现它非常成功。 我configuration我的任务运行“在启动时”和“每5分钟”的设置“不要开始任务,如果它已经运行”选中。
这里是一个封assembly置文件的例子,我在Windows Server 2008 R2上运行Fisheye 2.6.3。 这个文件与示例configuration大部分是相同的,在最后我会对其进行一些重要的补充。
#******************* ******************* #包装器属性 #******************* ******************* #工作目录 wrapper.working.dir = .. / .. / #Java应用程序 wrapper.java.command = C:\ Program Files \ Java \ jdk1.6.0_25 \ bin \ java.exe #Java Main类。 这个类必须实现WrapperListener接口 #或者保证WrapperManager类被初始化。 帮手 提供了#个课程来为你做这个。 请参阅集成部分 详细信息#的文档。 wrapper.java.mainclass = com.cenqua.fisheye.FisheyeServiceWrapper #Java Classpath(包含wrapper.jar)将类path元素添加为 #需要从1开始(添加lib FIRST,以便log4jconfiguration先被加载) wrapper.java.classpath.1 =。/ fisheyeboot.jar wrapper.java.classpath.2 =包装/ lib中/ *。jar子 #Java库path(Wrapper.DLL或libwrapper.so的位置) wrapper.java.library.path.1 =包装/ lib中 wrapper.java.library.path.2 = LIB /天然的/ Linux的I386 wrapper.java.library.path.3 = LIB /天然的/ OSX-PPC wrapper.java.library.path.4 = LIB /天然的/ Solaris的SPARC wrapper.java.library.path.5 = LIB /天然的/ Win32的x86的 #Java附加参数 wrapper.java.additional.1 = -server wrapper.java.additional.2 = -showversion wrapper.java.additional.3 = -Djava.awt.headless =真 #JDK 1.5 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 =假 wrapper.java.additional.7 = -Dcom.sun.management.jmxremote.ssl =假 wrapper.java.additional.8 = -Dcom.sun.management.jmxremote.authenticate =假 wrapper.java.additional.9 = -Dcom.sun.management.jmxremote.password.file =。/包装/ 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参数=256米 wrapper.java.additional.13 = -Xrs wrapper.java.additional.14 = -Dfile.encoding = UTF-8 #初始Java堆大小(以MB为单位) wrapper.java.initmemory = 64 #最大Java堆大小(以MB为单位) wrapper.java.maxmemory = 1024 #应用程序参数。 根据需要从1开始添加参数 #第一个应用程序参数是其主要类的名称 应用程序启动时将调用#方法。 class上 #名称之后是要传递给它的主参数的数量 # 方法。 然后是实际的参数。 wrapper.app.parameter.1 = com.cenqua.fisheye.FishEyeCtl wrapper.app.parameter.2 = 1 wrapper.app.parameter.3 =启动 #起始参数后面是主类的名字 要调用#方法来停止应用程序。 停止类名称 #后面跟着一个标志,控制包装是否应该 在退出JVM之前,等待所有非守护线程完成。 #该标志后面是要传递给的参数个数 #停止类的主要方法。 最后是实际的参数。 wrapper.app.parameter.4 = com.cenqua.fisheye.FishEyeCtl wrapper.app.parameter.5 =真 wrapper.app.parameter.6 = 1 wrapper.app.parameter.7 =停止 #******************* ******************* #包装logging属性 #******************* ******************* #控制台的输出格式。 (请参阅格式的文档) wrapper.console.format = M 控制台输出的#日志级别。 (请参阅日志级别的文档) wrapper.console.loglevel = INFO #logging文件用于包装输出logging。 wrapper.logfile = VAR /数/ wrapper.log #日志文件的输出格式。 (请参阅格式的文档) wrapper.logfile.format = LPTM 日志文件输出的#日志级别。 (请参阅日志级别的文档) wrapper.logfile.loglevel = INFO #日志文件允许增长到的最大大小 #日志被滚动。 大小以字节为单位。 默认值 #为0,禁用日志滚动。 可能会缩写为'k'(kb)或 #'m'(mb)后缀。 例如:10米= 10兆字节。 wrapper.logfile.maxsize =50米 #旧的允许的滚动日志文件的最大数量 #个文件被删除。 默认值0意味着没有限制。 wrapper.logfile.maxfiles = 10 sys /事件日志输出的#日志级别。 (请参阅日志级别的文档) wrapper.syslog.loglevel = NONE #******************* ******************* #包装Windows属性 #******************* ******************* #作为控制台运行时使用的标题 wrapper.console.title =鱼眼 #******************* ******************* #包装Windows NT / 2000 / XP服务属性 #******************* ******************* #警告 - 不要在应用程序中修改任何这些属性 #使用此configuration文件已被安装为服务。 #请在修改本节之前卸载服务。 该 #服务可以重新安装。 #服务的名称 wrapper.ntservice.name =鱼眼 #显示服务的名称 wrapper.ntservice.displayname =鱼眼 #服务的描述 wrapper.ntservice.description =鱼眼 #服务依赖关系。 从1开始添加依赖项 wrapper.ntservice.dependency.1 = #安装服务的模式。 AUTO_START或DEMAND_START wrapper.ntservice.starttype = AUTO_START #允许该服务与桌面进行交互。 wrapper.ntservice.interactive = FALSE
wrapper.java.command = C:\ Program Files \ Java \ jdk1.6.0_25 \ bin \ java.exe
JDK“热点”服务器可执行文件的完整path。 请注意,请下载完整的JDK,而不仅仅是JRE。
wrapper.java.additional.11 = -Dfisheye.inst = “C:\ Atlassian的\ fecru-2.6.3 \ BIN ..”
wrapper.java.additional.12 = -XX:MaxPermSize参数=256米
wrapper.java.additional.13 = -Xrs
wrapper.java.additional.14 = -Dfile.encoding = UTF-8
以上都没有在Atlassian文档中显示,我已经通过反复试验添加了这些内容。 当FeCru首次在服务包装下启动时,可能会因内存不足错误而停止运行,“MaxPermSize”行将修复该错误。
我也发现有必要指定FISHEYE_INST如上所示。 我不知道为什么path是用/..指定的,就像我发现的例子。 毫无疑问,一些烹饪linux的仪式。 其他的路线,我不记得他们是为了什么,但我因为某种原因添加了他们,没有logging为什么。 没有人是完美的 ;-)
wrapper.java.initmemory = 64 wrapper.java.maxmemory = 1024
堆内存分配从默认增加 – 我索引一些相当丰富的存储库,我可以承担额外的资源 – 你可以逃脱默认较小的分配。