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

经常由于本地的开发环境和服务器上的生产环境不同,导致项目部署过程中会遇到各种插曲,现在有了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版本,服务器重启系统也会自动重启,这个小工具还有线程守护,发现服务停掉会自动去尝试重启。是不是很省心。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/416143.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

宝塔面板 mongodb 允许外网访问

需要修改一下配置。 将bindIp:127.0.0.1 修改为 0.0.0.0

jsp执行过程

JSP执行过程图解 第一次请求: 当服务器上的一个JSP页面被第一次请求执行时,服务器上的JSP引擎首先将JSP页面文件转译成一个.java文件,也就是servlet,并编译这个java文件生成.class的字节码文件,然后执行字节码文件响应…

前端学习(2537):vue源码解析2伪数组转换为真数组

/*1[].slice.call(lis)*//*伪数组 */const lisdocument.getElementsByTagName(li)/*判断数组 false*/console.log(lis instanceof Array)/*打印第一个信息 歌谣2*/console.log(lis instanceof Array,lis[1].innerHTML)/*for each undefine*/console.log(lis instanceof Array…

前端学习(2539):节点类型

/*1[].slice.call(lis)*//*伪数组 */const lisdocument.getElementsByTagName(li)/*判断数组 false*/console.log(lis instanceof Array)/*打印第一个信息 歌谣2*/console.log(lis instanceof Array,lis[1].innerHTML)/*for each undefine*/console.log(lis instanceof Array…

JZOJ 8.15 B组总结

NO.1 平台 Description   Alice要搭建平台,平台不能漂在空气中,必须要有两根柱子支撑,具体地说,每个平台的两端必须由一根柱子支撑,柱子的另一端在地板或另一个平台上。   给你平台的放置位置(如下左…

宝塔面板 Windows 2012 R2 使用指南(在更新中)

第一次使用Windows系统服务器 1、安装宝塔Windows面板 For 2012 R2镜像。 从镜像市场选择 输入宝塔Windows面板 For 2012 R2进行选择,点击使用。 设置密码 2、使用windows电脑进行远程桌面连接

支付宝当面付接口如何计算优惠

支付宝当面付官方接口文档:https://docs.open.alipay.com/194/105170/ 在弄清楚如何计算优惠之前先了解下相关金额参数: 1、请求中金额参数total_amount:订单总金额,订单总金额,单位为元,精确到小数点后两位…

微信 公众号 JS接口安全域名 是啥 什么意思

在微信开发时,需要点击【公众号设置】→【功能设置】→【JS接口安全域名】填写自己的访问域名。 因为微信的安全做得比较好,我们根据 微信 js sdk写的函数、方法,只有在指定的安全域名下才能被微信唤起。 注意:设置完安全域后&am…

无效的appid排查方案

原贴地址:https://openclub.alipay.com/read.php?tid1909&fid72&ant_sourcezsearch,欢迎大家访问 报错信息一般如下: {"code":"40002","msg":"Invalid Arguments","sub_code":&q…

微信 IP白名单

买了周杰伦演唱会的门票才能去周杰伦演唱会听歌。在微信开发中获取access_token也是讲得同一个道理。我们首先需要设置微信的IP白名单。 点击查看即可配置。

教你设置eclipse自动生成的author等注释

每新建一个类上面都会有一行注释: /*** author 颠覆白的黑* version 创建时间:2018年3月26日 下午5:29:31* 类说明 */操作步骤和大家分享一下: window->preference->java->code styple&#xff0…

前端学习(2546):debugger

执行进行数据代理 变量存储了一下 加入断点

工作90:富文本编辑器使用篇wangedit

WangEdit组件 <template lang"html"><div class"editor"><div ref"toolbar" class"toolbar"></div><div ref"editor" class"text"></div></div> </template>&l…

教你Word一键自动生成目录步骤

首先当我们需要生成一个目录的时候&#xff0c;一定要按照一定的格式来写Word文档&#xff0c;一定要有我这样或你自己的格式&#xff01;下面进行详解&#xff1a; 比如研究内容概述对应标题1的格式内容如下&#xff1a; 那么你左侧导航栏二在《课程标准》“数与代数”领域&am…

教你创建自己的CSDN博客专栏

首先说明一下 专栏创建标准&#xff1a; 1. 申请者的CSDN个人博客中原创技术性博客文章要多于15篇。 2. 申请专栏主题明确&#xff0c;简介翔实清晰&#xff0c;并且与IT技术相关首先进入博客专栏&#xff1a;https://blog.csdn.net/column.html&#xff0c;点击我的专栏跳转预…

工作95视频上传逻辑

定好是前端直接把视频传到他们的服务器&#xff0c;还是先到我 们的后端暂存&#xff0c;提交的时候在存到他们那边