设置成windows服务
关于如何将jar包设置成windows服务这部分在 这篇博客 中写的很详细了,这里就不再赘述
配置成windows服务过程中碰到的问题
配置后在日志中查看报错信息为: 看日志中报错信息为: %1 不是有效的 Win32 应用程序
实际在下载Procrun后的解压包中,本身就分为64位与32位之分,使用的时候选择对应的版本即可
H2数据库权限问题(严格来讲,这个不属于配置服务的问题,应当属于H2数据库使用相关问题,但确实排查了很久。。。)
现象如下:
- 正常配置服务也可以启动,并且能正常打开应用,但是在登录的时候却报user不存在的问题(只有这个时候才使用到了数据库,用的是h2数据库)。
- 使用java -jar 能够正常启动,并且能够正常访问user信息。
思路
最开始就是想到这种服务能否调试
- 调试服务
运行服务为控制台模式,你需要使用 //TS// 参数。如
rem 安装
"%SRV%" //TS//prun-yaojingcai-erp
echo 安装服务完成。
调试无果的过程中,猜测是h2数据库文件的与用户访问的权限问题,因为我的配置文件中关于h2数据库的初始配置是
jdbc:h2:file:~/.h2/data-migration-new;AUTO_SERVER=TRUE
这个在windows下面的话,默认是生成在当前用户文件夹下面,。用java -jar的话是当前用户,访问自己用户文件夹下面的问题肯定是没有问题,但是如果添加为windows系统服务,是否就因为访问权限的问题访问不到呢?
因此尝试将h2数据库文件修改到相对jar应用上层data文件夹下面,代码如下:
jdbc:h2:file:./data/data-migration-new;AUTO_SERVER=TRUE
果然,修改后,服务中的也可以正常运行了。