我们使用Procrun(用于Windows服务的Apache Commons Daemon组件)开发了一个包装为Windows服务的jar。一切都在我自己的计算机和其他一些开发机器上运行良好,但是当我们在生产环境(Windows Server 2008)中安装它时,我们开始变得奇怪的行为。
首先,在启动和停止服务之后,由于某种原因,Java停止工作。在任何命令提示符下键入经典的“java -version”都不会产生任何输出。尝试启动任何Java应用程序绝对没有效果。唯一的解决方案是重新安装JRE。如果在重新安装JRE后停止并启动服务,它将再次被破坏。
发生了另一件奇怪的事情。有时候,当使用prunmgr来管理我们的服务时(在将其重命名为我们服务的名称后,比如说“MYSERVICE”),它会给我们一条消息,说明没有安装服务“gMYSERVICE”。在某些情况下,似乎认为我们的服务附加了“g”。有时会有两个额外的隐藏文件,可能是prunsrv和prunmgr的副本,并附加一个'g',如gprunsrv.exe和gMYSERVICE.exe。即使启用了隐藏文件模式,也无法使用系统资源管理器查看这些文件,但团队查看器可以检测到这些文件。