jfinal项目部署服务器,jfinal undertow项目再集成JDK,一键安装系统服务,让部署再快一点...

通过使用JfinalUndertow和非依附式系统服务管理工具nssm,实现了在开发环境JDK8和生产环境JDK6不一致情况下的项目部署。将JDK的jre目录集成到项目中,通过定制start.bat文件指定JDK路径,并使用nssm将批处理文件作为系统服务,确保服务在Windows环境下稳定运行。这种方法简化了部署流程,避免了对Tomcat的依赖,同时也方便了一键部署和服务器管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

经常由于本地的开发环境和服务器上的生产环境不同,导致项目部署过程中会遇到各种插曲,现在有了jfinal undertow,终于可以摆脱tomcat等各种配置,但是开发环境的JDK和服务器上的JDK版本不一定一致,比如我面临的情况是,开发环境是JDK8,但是生产环境还是JDK6,服务器上有众多依赖于JDK6的项目,还不能轻易更换,以前都是在tomcat中指定JDK版本,现在改用undertow后也想这样,于是在波总的建议下,目前实现方式如下:

将JDK中的jre目录拷贝到项目中来,我是copy到了main目录下,然后在package.xml中增加如下配置

${basedir}/src/main/jre

jre

然后在start.bat文件中增加如下配置,让批处理文件不去系统环境中找JDK而是在指定的位置去找set JAVA_HOME=%APP_BASE_PATH%jre

set path=%APP_BASE_PATH%jre/bin

由于我们的服务器是windows环境,所以需要将批处理文件安装成系统服务,便于维护和管理。最后是找到了一个靠谱的小工具叫 nssm (Non-Sucking Service Manager)非依附式系统服务管理工具,支持图形界面和命令行。仅需将nssm.exe和批处理文件放在同一目录下就可以直接使用了。如:

7ef241b9a277e7fc1d162943863f6bbe.png

我目前的安装服务脚本如下:@echo off

rem -------------------------------------------------------------------------

rem

rem 使用说明:

rem

rem 1: 修改service name为你期望在系统服务中显示的名称,本例中为 JfinalTest,共4处需要修改

rem

rem 2: 编写对服务的具体描述信息,即 Description 后面的内容。共一处需要修改

rem

rem -------------------------------------------------------------------------

setlocal & pushd

set APP_BASE_PATH=%~dp0

nssm install JfinalTest %APP_BASE_PATH%start.bat

nssm set JfinalTest AppDirectory %APP_BASE_PATH%

nssm set JfinalTest Description "this is first test for nssm"

nssm start JfinalTest

endlocal & popd

pause

其他删除服务、重启服务、停止服务命令都比较简单,大家可以自行网上找找资料,很多。而且该工具还支持图形界面,也很简单,如下

d623a185dacdcc8375c62ad1bdcf5f54.png

然后把编写的服务管理的脚本都用maven打包插件在打包时一并copy到部署包中,在服务器上解压后,即可实现一键部署,不用再关心tomcat、不用再关心服务器JDK版本,服务器重启系统也会自动重启,这个小工具还有线程守护,发现服务停掉会自动去尝试重启。是不是很省心。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值