windows java -jar 如何不显示黑窗口_Java应用使用WinSW服务化
背景基于Java技术栈开发,由于种种原因运行于Windows操作系统,Java应用打包成jar后,正常为命令行的方式运行。命令行方式容易误关掉,且工具栏显示很多的命令行应用,不易查找,也不便于监控软件监控进程。因此需要将Java应用打包为Windows服务,便于再后台运行,不在显示窗口。WinSW介绍WinSW 和Java Service Wrapper一样,WinSW也可以将java的jar程序
背景
基于Java技术栈开发,由于种种原因运行于Windows操作系统,Java应用打包成jar后,正常为命令行的方式运行。命令行方式容易误关掉,且工具栏显示很多的命令行应用,不易查找,也不便于监控软件监控进程。因此需要将Java应用打包为Windows服务,便于再后台运行,不在显示窗口。
WinSW介绍
WinSW 和Java Service Wrapper一样,WinSW也可以将java的jar程序转为windows服务。Jenkins即使用WinSW转化为windows服务。
- 配置文件更精简直观
- 运行更简便
- 免费开源
使用步骤
下面以platform-server为例说明转化为Windows服务的步骤。
更新文件名
下载WinSW.NET4.exe和sample-allOptions.xml
重命名WinSW.NET4.exe为PlatformServer.exe
重命名sample-allOptions.xml为PlatformServer.xml
完成后如下图所示:
配置XML文件
<service>
<id>PlatformServer</id>
<name>PlatformServer</name>
<description>X Plan proccess serverice</description>
<executable>java</executable>
<arguments>-Xrs -Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m -jar "%BASE%platform-server-0.0.1-SNAPSHOT.jar"</arguments>
<logmode>rotate</logmode>
<priority>Normal</priority>
<stoptimeout>45 sec</stoptimeout>
<stopparentprocessfirst>false</stopparentprocessfirst>
<startmode>Automatic</startmode>
<!--
<depend>Eventlog</depend>
<depend>W32Time</depend>
-->
<logpath>%BASE%logs</logpath>
<waithint>60 sec</waithint>
<sleeptime>10 sec</sleeptime>
</service>
运行
- 安装服务
以管理员模式打开控制台(如果不以管理员模式打开,可能报AssessDenied异常),然后输入命令:
PlatformServer.exe install
使用命令net start platformserver 启动即可
services.msc可以查看服务状态
- 卸载服务
PlatformServer.exe uninstall
常用命令
-
- start 启动服务
- stop 停用服务
- restart 重启服务
- status 状态
定制LOGO
使用winrun4j替换logo
RCEDIT64 /I PlatformServer.exe 1040.ico
完成后入下图所示:
Zoopkeeper服务化
Zoopkeeper bin目录脚本zkEnv用于设置相关变量、zkServer用于启动应用,相关配置如下:
<service>
<id>zookeeper</id>
<name>zookeeper</name>
<description>zookeeper serverice</description>
<env name="ZOOKEEPER_HOME" value="%BASE%"/>
<env name="ZOOCFGDIR" value="%BASE%conf"/>
<env name="ZOO_LOG_DIR" value="%BASE%logs"/>
<env name="ZOO_LOG4J_PROP" value="INFO,CONSOLE"/>
<env name="CLASSPATH" value="%BASE%*;%BASE%lib*;%ZOOCFGDIR%"/>
<env name="ZOOCFG" value="%ZOOCFGDIR%zoo.cfg"/>
<env name="ZOOMAIN" value="org.apache.zookeeper.server.quorum.QuorumPeerMain"/>
<executable>java</executable>
<arguments>-Dzookeeper.log.dir="%ZOO_LOG_DIR%" -Dzookeeper.root.logger="%ZOO_LOG4J_PROP%" -cp "%CLASSPATH%" %ZOOMAIN% "%ZOOCFG%"</arguments>
<logmode>rotate</logmode>
<priority>Normal</priority>
<stoptimeout>45 sec</stoptimeout>
<stopparentprocessfirst>false</stopparentprocessfirst>
<startmode>Automatic</startmode>
<logpath>%BASE%logs</logpath>
<waithint>60 sec</waithint>
<sleeptime>10 sec</sleeptime>
</service>
参考资料
- 说明文档
- 下载地址
最后喜欢本篇文章或者对您有帮助,请点赞或者关注,您的点赞和关注是作者持续更新的动力。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)