在JFinal-Undertow下开发的项目,打包后同样也能部署到tomcat上

需求:数据猫项目开发使用的是JBolt创建创建出来的maven工程,基于Undertow开发,开发过程全程没有Tomcat的影子,其实部署也不需要tomcat了。

但是,中间出现一个bug需要看日志的时候,Undertow的不是太方便,因为调试的时候需要直接把本地的一个Service里修改后,把class文件替换就行了,直接去上传替换线上环境里的一个class文件。


一、先看看,在Eclipse中 JBolt执行打包后,Undertow的项目打包结构。

image.png

config:放所有配置文件 就是在maven项目中java.main.resources下的各种配置文件

lib:放所有依赖第三方库和本项目的所有class文件打包成的一个jar

webapp:放所有前端模板,静态资源等文件,可访问资源等。

二、再看看tomcat下的War包部署结构

image.pngimage.png

WEB-INF下方的是各种配置文件,第三方Lib库,和所有class文件 根目录_view里是所有前端可访问页面、模板和资源等


现在问题在于,Undertow打包是把整个web项目下的classes里的class文件打包成了一个jar了,没法直接部署到tomcat,但是熟悉tomcat下部署目录结构的都知道,把需要的文件放在该放的位置就行了。

先做个预告:JBolt插件后面增加不管基于什么tomcat、jetty、还是Undertow开发的项目,都可以打包成任意需要的环境,比如创建环境是Undertow,但是需要部署的时候就右键 打包成Tomcat-War 就OK了。


现在,来说说数据猫是怎么把Undertow下的结构,部署到Tomcat上的。

步骤:

1、在tomcat上的部署目录里创建War包解压后的结构

image.png

在WEB-INF下创建

image.png

将Undertow目录config下的配置文件 复制到这个classes下,将undertow下的所有的lib下的jar复制到tomcat部署目录lib里

web.xml从开发环境IDE里复制进去。

最后将Undertow下的webapp下的所有内容复制到这个WEB-INF同级目录。

MATA_INF下创建一个文件:

image.png

内容就填写两行吧:

image.png


这样就搞定了。

启动正常,运行。

如果嫌弃每次更换lib中的项目打包Jar麻烦的话,可以在maven项目target目录里找到classes 直接复制上传到tomcat下的classes里。


上述步骤详细页啰嗦,所有JBolt插件后面会增加一键搞定这套流程。

敬请期待。





注:另外今天开发者计划特惠活动还有11小时结束,欢迎加入。

http://www.jfinal.com/share/1696



评论区

credavis

2019-07-12 13:31

赞一个!!!!

JFinal

2019-07-12 15:03

jfinal undertow 下开发,打包也可以直接打成 tomcat 需要的,这里有文档:
https://www.jfinal.com/doc/1-7

没有使用官方的方式是不希望改打包配置?

山东小木

2019-07-12 16:18

@JFinal 一方面是需要开发环境不动代码和配置 只需要短时间内在tomcat上测试bug 另一方面是借助此文 对比两者打包结构不同和如何不改任何配置 快速部署到tomcat

山东小木

2019-07-12 16:18

等JBolt插件出来 运行原理就跟文档一样了 动态生成一个针对tomcat打包的pom文件

JFinal

2019-07-12 16:37

@山东小木 jfinal undertow 项目如果是更新服务器上的 tomcat 结构项目,对于 Java 代码来说可以只上传 target/classes 下的文件到 WEB-INF/classes 之下

当然,上传项目的 project-xxx.jar 包到 WEB-INF/lib 下面会更方便,因为只上传一个文件就可以了。这种方式需要将 WEB-INF/classes 下面的 .class 文件删掉,因为这个目录下面的 .class 优先级高于 WEB-INF/lib 下面的 jar 包中的 .class

其实部署时就不应该存在 .class 文件, tomcat 下的 WEB-INF/classes 下的 .class 不应该存在

山东小木

2019-07-12 18:32

@JFinal 是的文章里提到了 目前按照文章来处理数据猫的快速转移到tomcat里测试很方便 等插件做好一键处理就更好了

JFinal

2019-07-12 19:23

@山东小木 数据猫为啥还在用 tomcat 呢?

"中间出现一个bug需要看日志的时候,Undertow的不是太方便" 这个问题是咋回事, 日志不是通过 log4j.properties 配置输出到文件中了吗?