zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    pipelinewise 学习二 创建一个简单的pipeline
    pipelinewise 学习一 docker方式安装
    Supercharging your ETL with Airflow and Singer
    ubuntu中使用 alien安装rpm包
    PipelineWise illustrates the power of Singer
    pipelinewise 基于singer 指南的的数据pipeline 工具
    关于singer elt 的几篇很不错的文章
    npkill 一个方便的npm 包清理工具
    kuma docker-compose 环境试用
    kuma 学习四 策略
  • 原文地址:https://www.cnblogs.com/tc310/p/13939918.html
Copyright © 2011-2022 走看看