• 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

  • 相关阅读:
    EasyTransaction主要源码分析
    编程哲理小故事:Tina的运动会方阵
    多维扩展点的思考与设计——解决渠道、产品增加引发的腐化问题
    分布式事务框架Seata及EasyTransaction架构的比对思考
    设计,架构,框架之间是什么关系?
    你知道如何画好一幅架构图么?
    学会分享痛苦
    建立你自己的博客
    使用正确的工具软件
    掌握主动权
  • 原文地址:https://www.cnblogs.com/tc310/p/13939918.html
Copyright © 2020-2023  润新知