jfinal undertow项目集成JDK做成系统服务

转自:http://www.jfinal.com/share/1296

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

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

<fileSet>
    <directory>${basedir}/src/main/jre</directory>
    <outputDirectory>jre</outputDirectory>
</fileSet>

然后在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和批处理文件放在同一目录下就可以直接使用了。如:

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

image.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

其他

服务管理主要有启动、停止和重启,其命令如下:

  • 启动服务: nssm start <servicename>
  • 停止服务: nssm stop <servicename>
  • 重启服务:    nssm restart <servicename>
  • 服务删除:

    服务删除可以使用如下命令之一:

    • nssm remove <servicename>
    • nssm remove <servicename> confirm

    功能没有大的区别,后面的命令是自动确认的,没有交互界面。

命令都比较简单,大家可以自行网上找找资料,很多。而且该工具还支持图形界面,也很简单,如下

1207100-20180329160115318-512703640.png

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

其他参考资料:

https://www.cnblogs.com/TianFang/p/7912648.html

原文地址:https://www.cnblogs.com/tc310/p/13939918.html