1. 下载WinSW.NET4.exe 并改成你自己的项目名称,如: club.exe
2. 创建项目名.xml,如: club.xml,复制并修改以代码:
- <configuration>
- <id>club</id>
- <name>jfinal club</name>
- <description>jfinal club</description>
- <executable>jfinal.bat</executable>
- <logmode>rotate</logmode>
- <startargument>start</startargument>
- <stopargument>stop</stopargument>
- </configuration>
最后的结构如下图
3. 以管理员运行cmd(win10为win+x+A),并进入到项目文件夹。
注册服务:
- .\club.exe install
移除服务
- .\club.exe uninstall
运行服务
- net start club
停止服务
- net stop club
完成,收工。
4. xml另一种写法,不需要jfinal.bat(注意修改自己的主类)
- <configuration>
- <id>club</id>
- <name>jfinal club</name>
- <description>jfinal club</description>
- <executable>java</executable>
- <logmode>rotate</logmode>
- <env name="MAIN_CLASS" value="com.mypackage.Application"/>
- <env name="JAVA_OPTS" value="-Xms256m -Xmx1024m"/>
- <env name="APP_BASE_PATH" value="%BASE%" />
- <env name="CP" value="%APP_BASE_PATH%\config;%APP_BASE_PATH%\lib\*" />
- <arguments>-Xverify:none %JAVA_OPTS% -cp %CP% %MAIN_CLASS%</arguments>
- <stopparentprocessfirst>true</stopparentprocessfirst>
- </configuration>
5. 存在问题
第一种配置文件写法,start 是没问题的。stop 也能停止项目,但是jfinal 好像没有正常停止,因为 onStop() 没有执行。路过的大神如果知道的话还请指点。
ps. 经评论里网友提点,无法正常停止是因为java变成windows服务时 jps 获取不到 pid。
经修改第二种配置文件正常,推荐使用(本人采用第二种方法)。
ps. 这种方法也不仅可以注册java为服务,其它可运行程序也可以,如nginx. 具体请看:https://github.com/kohsuke/winsw