Jar与war的区别+SpringBoot打war包部署到tomcat中?

版权声明:禁止转载 https://blog.csdn.net/qq_36505948/article/details/82531821

一,认知jar与war的区别与及适用场景?

javaSE程序可以打包成Jar包(J其实可以理解为Java了),主要是指一些工具类包与简单的程序。JavaWeb程序则可以打包成war包(w其实可以理解为Web了)。项目的发布是把war发布到Tomcat的webapps目录下,Tomcat会在启动时自动解压war包,并进行编译!

jar包是与平台无关的一种压缩方式,以流行的 .zip文件格式为基础。与 zip 文件不同的是,JAR 文件不仅用于压缩和发布,还可以用于部署和封装库、组件和插件程序,并可被像编译器和 JVM 这样的工具直接使用,Jar包中基本是被编译完成的字节码文件(.class),在Jar包包含有指引文件来指示如何进行调用和数据读取!

虽然WAR文件和JAR文件的文件格式是一样的,并且都是使用jar命令来创建,但就其应用来说,WAR文件和JAR文件是有根本区别的。JAR文件的目的是把类和相关的资源封装到压缩的归档文件中,而对于WAR文件来说,一个WAR文件代表了一个Web应用程序,它可以包含 Servlet、HTML页面、Java类、图像文件,以及组成Web应用程序的其他资源按照一定的目录层次结构进行整合集中发布,而不仅仅只是类的归档!

基于war包的特点,是对静态与其他资源进行整合,因此我们在开发阶段便不是那么适合使用war,因为开发阶段对代码和程序的改动颇大,重新建立war包是一件浪费的事情,但是在产品发布阶段,war包则发挥其巨大作用了,我们通常会选择将程序给打成war包,放置到Tomcat的webapps中,等待tomcat去自动发布!


二、SpringBoot文件打包成war包,放到Tomcat里面发布?

1.添加spring-boot-starter-tomcat的provided依赖(编译时依赖)

    进入maven官网搜索即可获取依赖

2.添加插件maven-war-plugin插件

3.入口程序修饰

在入口程序继承SpringBootServletInitializer方法并重写SpringApplicationBuilder configure方法

4.对项目进行mvn clear package 启动项目,项目重新打包或者执行重新生成等编译命令

在target目录会生成war包,该war包就是此项目的包!

5.tomcat运行,将之放置到Tomcat的webapps中,启动tomcat 的命令,那么tomcat则会去自动解压并部署


三、那项目打包jar包发布?

1.正常情况下的发布,将SpringBoot里面的war配置给去除掉,然后生成运行mvn -clear package包进行编译打包,在target目录下生成目标文件!

2.上传至于linux的某个目录下,直接运行命令:nohup java -jar xxx.jar &   将文件部署信息给存储到同目录下的nohup.out文件里面


四、在线JMeter压测呢?

1.如果不需要加载CSV配置文件的,直接在本地配置好xxxx.jmx文件,然后上传到linux中

2.使用jmeter读取jmx文件并启动压测,命令如===>   ./apache-jmeter-4.0/bin/jmeter.sh -n -t xxxx.jmx -l  result.jtl

3.将生成的result.jtl文件取回window上,用jmeter进行读取观察!

4.对于需要进行加载CSV配置文件的,在本地配置好xxx.jmx文件后需要将配置好的参数文件一起上传然后在xxx.jmx中的文件路径修改对参数文件的加载!此后重新开始执行第二步!


疑难问题:

1.找不到依赖,百度maven官网或者博客去复制

2.war部署在webapps下后项目的访问需要添加上项目名,这个时候的路径可能是访问不了的,这种情况可以将项目给部署都放到ROOT目录下,则可以顺利执行,原因是content的路径为项目名,所以无法绕过content进行访问!

3.JMeter的压测一般是以第二次为准备,第一次为程序的热身压测,并且一般JMeter的压测是不要在同一台机器上进行压测,因为同一台机器运行的JMeter也会占据一定的CPU负载。

猜你喜欢

转载自blog.csdn.net/qq_36505948/article/details/82531821