如报表,启动脚本在:web/startReportSys.bat,该bat内容:

cd /d %~dp0

.\jre\bin\java -jar .\reportsys-1.0.jar


在服务管理器中配置了ExeName为java reportsys,服务管理器将会检测启动命令进程名或者启动命令行中,是不是包含java和reportsys两个关键词。实际上检测成功:

<Server Name="报表服务" ExeName="java reportsys" ExeDir="" StartCmd="../web/startReportSys.bat" StopCmd="" DelaySec="0" RestartAt="" ShowConsole="0" AutoRestart="1" Parameter="" Enable="1" />


原因:

服务管理器在windows下,会遍历所有的进程,得到进程名和启动命令行。

  1. 如果进程名称和配置的ExeName完全相等(不扩展名,且不区分大小写,如进程名称可能是pkmemdb.exe,配置文件配置了pkmemdb,则两者完全匹配),则返回进程号
  2. 如果命令行按照“. /\”这4中分割符分割后,形成各个字符子串(如:.\jre\bin\java -jar .\reportsys-1.0.jar,会分割为:jre,bin,java,jar,reportsys,1,0,jar这几个部分进行比较)。如果这些子串和配置的ExeName中以空格隔开的子串完全相等,则认为匹配

如果上述2条有一条匹配成功,则认为匹配成功了,那么就会返回该进程id号,表示进程已经启动



  • 无标签