SpringBoot-项目部署

SpringBoot项目部署可以通过将项目打成可执行的jar包或war包来实现,也可以使用容器化技术如Docker将项目部署到云平台中。在部署时需要注意配置文件的位置和启动参数的设置,同时确保目标环境中的Java版本与项目所需的Java版本一致。部署完成后,可以通过访问项目的URL或监控端点来进行访问和管理。

这里主要讲Docker外两种手动打包的部署方式:

一、jar包部署(内置tomcat)

在实现jar包部署时,我们通常会选择使用内置的Tomcat容器。这种方式使得我们可以将整个应用打包成一个可执行的jar文件,方便部署和运行。

1、项目打包成 jar包

首先,我们通过Eclipse的Maven插件,双击生命周期中的package操作,系统将自动将项目打包成一个可执行的jar包。默认情况下,该jar包会存放在项目路径下的target目录。

默认是项目路径下的target目录。


2、拷贝 jar包 到服务器发布目录

将生成的jar包拷贝到服务器上的发布目录,确保在目标服务器上有足够的权限,并且目录结构符合预期。


3、运行java命令发布 jar包

使用以下命令在服务器上运行jar包,其中"xxxxx"表示jar包的物理路径:

# xxxxx为jar包的物理路径
java -jar xxxxx.jar

这会启动嵌入式的Tomcat容器,并在默认的端口(通常是8080)上启动Web应用。成功发布后,可以通过访问项目编写时设置的服务端口(例如8088),来确认项目已经成功运行。 

 


4、测试访问 

发布成功后,我们访问项目编写时设置的服务端口8088,可以看到项目成功运行了。


5、停止jar包发布的方法

在某些情况下,我们可能需要停止已经发布的jar包。有两种常见的方法:

  • ① 直接关闭cmd窗口: 如果是通过命令行启动的,关闭命令行窗口将终止正在运行的jar包。

  • ② taskkill任务: 如果第一种方法不起作用,或者端口仍然被占用,我们可以使用taskkill命令终止进程。例如,如果项目运行在 8088端口,可以执行以下命令:

# 查看所有在运行的jar包的PID
jps 
# 根据PID强制终止任务
taskkill /pid pid号 -f  -t 

上述命令通过查找占用8088端口的进程ID(PID),然后使用taskkill命令强制终止该进程。

通过这些步骤,我们可以实现通过jar包部署应用,使得应用的发布和管理变得更加简便。这种方式适用于轻量级的应用,特别是那些不需要外部Web服务器的情况。 


二、war包部署(依赖外置tomcat)

当我们选择将 Java Web 项目以 war包 形式部署,并依赖外置 Tomcat 时,我们需要进行以下步骤: 

1、修改项目启动类

确保项目中存在一个适当的启动类。这是应用程序的入口点,通常是一个类,包含有main方法或是被标注为Spring Boot应用的启动类。

package com;import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;@EnableAdminServer
@SpringBootApplication//将原有启动类继承SpringBootServletInitializer 
public class SbaApplication extends SpringBootServletInitializer {public static void main(String[] args) {SpringApplication.run(SbaApplication.class, args);}//这一段重写方法也是新加代码@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {return builder.sources(this.getClass());}
}

2、pom.xml 引入 war包 依赖

在项目的 pom.xml 文件中引入 war包 依赖。这通常涉及到添加 javax.servlet-api 等相关依赖,以确保项目能够正确在外置 Tomcat 中运行。引入完依赖后,务必刷新 Maven 以更新 jar包 和依赖关系。 

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><configuration><failOnMissingWebXml>false</failOnMissingWebXml></configuration></plugin>

引入完记得刷新maven以更新jar包和依赖关系。


3、packaging 设置为 war

在 pom.xml 文件中,将 packaging 设置为 war,示例如下:

<packaging>war</packaging>


4、导出 war包

通过 Maven 插件,双击右侧的 Maven 菜单里的 package,以导出 war包。生成的 war包 通常位于项目的 target 目录下。


5、服务器部署 war包

将生成的 war包复制到外置 Tomcat 的 webapps目录下。一旦 war包被放置,Tomcat会自动解压缩并在 webapps目录下生成对应的应用文件夹。

将 war包 放到服务器 tomcat 的目录下。

war包 放到 tomcat 的 webapps目录 下之后,如果运行 tomcat,war包会自动生成解析后的文件夹,等 tomcat 关闭后,我们可以把原先的 war包 删除,只保留最新的解析后的文件夹。
注意:war包 不能在 tomcat 运行时删除,否则自动会删除解压后的工程。

接着我们访问 tomcat 来测试是否访问成功,比如我的 tomcat 是 70端口,访问 localhost(或公网ip):70/ProjectSchedule,可以看到项目正常运行。


6、测试访问

启动Tomcat,并访问相应的URL,检查项目是否正常运行。例如,如果 Tomcat 监听 xxx 端口,可以通过访问 localhost:xxx 或公网IP来验证部署是否成功。

通过这些步骤,我们成功地将Java Web应用以war包形式部署到外置Tomcat中。这种方式适用于需要与其他应用共享Tomcat容器的情况,同时也提供了更大的灵活性和可维护性。以上所述是常用的两种Java项目打包发布方式,具体选择取决于项目的需求和部署环境。

以上是常用的两种 Java项目 打包发布的方式。

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

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

相关文章

边缘计算的挑战和机遇

边缘计算面临着数据安全与隐私保护、网络稳定性等挑战&#xff0c;但同时也带来了更强的实时性和本地处理能力&#xff0c;为企业降低了成本和压力&#xff0c;提高了数据处理效率。因此&#xff0c;边缘计算既带来了挑战也带来了机遇&#xff0c;需要我们不断地研究和创新&…

华为机试真题实战应用【赛题代码篇】-VLAN资源池(附Java、C++和python代码)

目录 题目描述 思路解析 思路1 思路2 代码实现 PYTHON C++

服务器怎么更换cdn?-速盾网络

随着互联网的不断发展&#xff0c;网站的访问量也越来越大&#xff0c;这就需要使用CDN&#xff08;内容分发网络&#xff09;来提供更好的用户体验和更高的网站加载速度。然而&#xff0c;在使用CDN的过程中&#xff0c;有时候我们需要更换CDN服务商&#xff0c;本文将介绍服务…

【Nuxt3】Nuxt3脚手架nuxi安装项目和项目目录介绍

简言 最近学了Nuxt3,并使用它创建了自己的小网站。记录下学习到的nuxt3内容。 Nuxt3官网 Nuxt 是一个免费的开源框架&#xff0c;可通过直观、可扩展的方式使用 Vue.js 创建类型安全、高性能、生产级的全栈 Web 应用程序和网站。 支持SSR、SPA、建立静态网站&#xff0c;也可以…

DynamoDB和Cassandra、MongoDB的比较

DynamoDB和Cassandra、MongoDB的比较 前面说过Cassandra受2007年Amazon发表的Dynamo论文影响非常深&#xff0c;在DynamoDB发布的第一天&#xff0c;提供Cassandra商业化支持的DataStax公司的Jonathan Ellis就写了一篇文章&#xff0c;分析了Cassandra和DynamoDB的差异。 虽然J…

如何在BTC生态中创造独特的数字资产?bitget教程

BRC-20通证是什么&#xff1f; 听说了吗&#xff1f;BRC-20通证在比特币上搞事情啦&#xff01;它们不依赖智能合约&#xff0c;直接在比特币的最小单位上动手脚。这就像在用最小的积木搭房子&#xff0c;太神奇了&#xff01;虽然现在还在实验阶段&#xff0c;但已经有很多人…

12AOP面向切面编程/GoF之代理模式

先看一个例子&#xff1a; 声明一个接口&#xff1a; // - * / 运算的标准接口! public interface Calculator {int add(int i, int j);int sub(int i, int j);int mul(int i, int j);int div(int i, int j); }实现该接口&#xff1a; package com.sunsplanter.prox…

流星全自动网页生成系统重构版源码

流星全自动网页生成系统重构版源码分享&#xff0c;所有模板经过精心审核与修改&#xff0c;完美兼容小屏手机大屏手机&#xff0c;以及各种平板端、电脑端和360浏览器、谷歌浏览器、火狐浏览器等等各大浏览器显示。 为用户使用方便考虑&#xff0c;全自动网页制作系统无需繁琐…

错误处理(基于ESP-IDF)

主要参考资料 B站Up主孤独的二进制《错误处理 - 乐鑫 ESP32 物联网开发框架 ESP-IDF 开发入门》 ESP-IDF编程指南>API指南>错误消息: https://docs.espressif.com/projects/esp-idf/zh_CN/v5.1/esp32s3/api-guides/error-handling.html ESP-IDF编程指南>API指南>严…

第十五届蓝桥杯单片机组备赛——中断系统与外部中断应用

文章目录 一、中断系统二、中断应用 一、中断系统 中断源&#xff1a;IAP15F2K61S2有多个中断源&#xff0c;包括外部中断0/1&#xff0c;定时器/计数器0/1/2/3&#xff0c;串行接口&#xff0c;SPI接口&#xff0c;ADC 转换结束中断&#xff0c;PCA模块&#xff0c;比较器中断…

二、QT下载、安装及问题解决(windows系统)

本章节最重要的一点&#xff1a;安装时&#xff0c;路径中不能有中文&#xff0c;切记&#xff0c;否则QT不能正常运行。 下载两种途径&#xff1a; 1、官网下载&#xff0c;慢且不好访问&#xff1b; 2、国内一些大学网站的镜像&#xff0c;下载比较快&#xff0c;但是可能…

Android中的anr定位指导与建议

1.背景 8月份安卓出现了一次直播间卡死(ANR)问题&#xff0c;且由于排查难度较大&#xff0c;持续了较长时间。本文针对如何快速定位安卓端出现ANR问题进行总结和探讨. 这里大致补充一下当时的情况,当时看到情景的是从某一个特定的场景下进入直播间后整个直播间界面立刻就卡住…

lenovo联想笔记本电脑拯救者Legion Y7000 2019 PG0(81T0)原装出厂Windows10系统

链接&#xff1a;https://pan.baidu.com/s/1fn0aStc4sfAfgyOKtMiCCA?pwdas1l 提取码&#xff1a;as1l 联想拯救者原厂Win10系统自带所有驱动、出厂主题壁纸、系统属性联机支持标志、系统属性专属LOGO标志、Office办公软件、联想电脑管家等预装程序 所需要工具&#xff1a;…

更换为mainwindow.ui更新工程架构

文章目录 前言一、新建带mainwindow.ui的工程1.新建工程2. 添加工程模块添加opencv的库3.添加资源3.1工程上添加资源3.2引用资源 4.添加曲线文件4.1 复制关键文件到新工程4.2 新进显示曲线的ui带.h的为了方面名字取一样4.3添加曲线显示控件4.4 添加工具 5. 添加曲线.h文件内容6…

MySQL之单表查询

素材&#xff1a; 表名&#xff1a;worker-- 表中字段均为中文&#xff0c;比如 部门号 工资 职工号 参加工作 等 CREATE TABLE worker ( 部门号 int(11) NOT NULL, 职工号 int(11) NOT NULL, 工作时间 date NOT NULL, 工资 float(8,2) NOT NULL, 政治面貌 varchar(10) NO…

2.1 python文本处理-正则表达式

python正则模块介绍 标准库模块 re 模块方法 # 将正则表达式样式编译成一个正则对象。一般用于多次使用正则对象的场景 re.compile(pattern) # 扫描string字符串并查找符合patten样式的第一个位置&#xff0c;返回对应的 Match 结果&#xff0c;否则返回 None re.search(patt…

数据库结构文档生成(通过PDMReader)

将数据库的表结构生成数据库结构文档有三种方法&#xff1a; 1、通过 PDMReader生成文档&#xff1b; 2、使用EZDML 工具生成&#xff08;下载地址&#xff1a;EZDML - 下载&#xff09;&#xff1b; 3、使用SCREW 插件&#xff0c;通过java代码生成。 本文章先介绍通过PDM…

Python入门0基础学习笔记

1.编程之前 在编写代码之前&#xff0c;还有两件事需要做&#xff1a; 安装 Python 解释器&#xff1a;计算机是没法直接读懂 Python 代码的&#xff0c;需要一个解释器作为中间的翻译&#xff0c;把代码转换成字节码之后再执行。 Python 是翻译一行执行一行。一般说的安装 …

kafka为什么快

消息发送 1、批量发送: Kafka 通过将多个消息打包成一个批次&#xff0c;减少了网络传输和磁盘写入的次数&#xff0c;从而提高了消息的吞吐量和传输效率。 2、异步发送: 生产者可以异步发送消息&#xff0c;不必等待每个消息的确认&#xff0c;这大大提高了消息发送的效2.率 …

Spring Boot源码解读与原理分析

解读和分析Spring Boot的源码与原理是一项深入且复杂的任务&#xff0c;主要因为Spring Boot是一个庞大的项目&#xff0c;涵盖了众多的Spring框架特性。以下是一些关键点&#xff0c;可以帮助你理解Spring Boot的工作原理&#xff1a; 1. 起点&#xff1a;SpringApplication …