Maven+Tomcat实现热部署

Maven实现Tomcat的热部署 在Java Web开发中,使用Maven和Tomcat可以实现热部署的效果。本文将介绍如何使用Maven配置Tomcat热部署,并附带相应的源代码示例。通过使用Maven和Tomcat的组合,我们可以轻松实现Java Web应用程序的热部署功能。在本文中,我们通过创建一个Maven项目,并配置Tomcat插件,实现了对代码的修改即时生效。在部署过程中,Maven会自动将项目的编译结果复制到Tomcat的webapps目录下。首先,确保已经安装了Maven和Tomcat,并且配置了相关的环境变量。 阅读详情

热部署:所谓热部署,就是在系统正在运行的时候升级软件,却不需要重新启动应用。

Tomcat热部署方式一:

直接将一个web项目打成一个war包,并将war包放入tomcat的webapps目录下,此时tomcat服务器会自动将次war包解压并在服务器上进行部署发布。

Tomcat热部署方式二:

使用Tomcat自带的Tomcat Manager来对tomcat上的web项目进行管理。
找到tomcat-users.xml这个配置文件,在这个配置文件的最下方,有如下这么几行标签:

<tomcat-users>
<!--
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <user username="tomcat" password="<must-be-changed>" roles="tomcat"/>
  <user username="both" password="<must-be-changed>" roles="tomcat,role1"/>
  <user username="role1" password="<must-be-changed>" roles="role1"/>
-->
</tomcat-users
  • manager-gui:允许访问html接口(即URL路径为/manager/html/*)
  • manager-script:允许访问纯文本接口(即URL路径为/manager/text/*)
  • manager-jmx:允许访问JMX代理接口(即URL路径为/manager/jmxproxy/*)
  • manager-status:允许访问Tomcat只读状态页面(即URL路径为/manager/status/*)

以一个具体的配置为例:

<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="tomcat" password="tomcat" roles="manager-gui,manage-script"/>

最后,启动Tomcat服务器,访问http://localhost:8080/manager,然后输入用户名密码,此时用户名和密码都是:tomcat

登入成功能够以客户端的形式来进行tomcat上web项目,找到如下所示这一栏:

这里写图片描述

此处可以将一个war包上传到服务器中,上传成功后便会自动部署并发布(ps:有关Tomcat Manager的更多用处,有兴趣的朋友可以自己再去了解一下,此处主要说明tomcat的热部署)。


Maven项目下进行Tomcat热部署:

1、在pom文件中配置如下插件即可:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <configuration>
                <!-- 端口号,可自定义 -->
                <port>8080</port>
                <!-- 项目访问路径 -->
                <path>/qing</path>
                <!-- Tomcat Manager的url访问路径,固定写法 -->
                <url>http://localhost:8080/manager/text</url>
                <!-- Tomcat Manager的用户名和密码 -->
                <username>tomcat</username>
                <password>tomcat</password>
            </configuration>
        </plugin>
    </plugins>
</build>

2、进入Tomcat的bin目录启动tomcat服务器,或者在myeclipse、eclipse中启动tomcat服务器

3、在eclipse或者myeclipse中右键点击需要热部署的web项目,选择:Run As–>Maven build..,输入:
这里写图片描述

3.最后点击Run,然后访问:http://localhost:8080/qing/index.html,能够成功访问项目说明项目部署成功。

注:
1、想要在maven项目中进行tomcat的热部署,必须要开启Tomcat Manager
2、部署到远程服务器也是相同的道理,只需要将localhost改为tomcat所在的服务器IP即可


问题:

问题1:

在部署到远程服务器时,出现以下问题:

[INFO] I/O exception (java.net.SocketException) caught when processing request: Connection reset by peer: socket write error
[INFO] Retrying request
Uploading: http://******/manager/text/deploy?path=%2F
4098/35084 KB   
[INFO] I/O exception (java.net.SocketException) caught when processing request: Connection reset by peer: socket write error
[INFO] Retrying request
Uploading: http://******/manager/text/deploy?path=%2F
4096/35084 KB   

经过查询资料后发现,这是由于Tomcat的远程地址拦截器造成的结果,默认情况下,Tomcat的Manager和Host-Manager只接受本机的请求,要让它接受远程的请求,需要添加manager.xml的配置。

在tomcat服务器的conf/Catalina/localhost/目录下创建一个manager.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<Context privileged="true" antiResourceLocking="false"
         docBase="${catalina.home}/webapps/manager">
    <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
</Context>

如果需要实现允许特定的IP地址访问Manager的需求,可在上面的allow属性中设置规则。具体规则设置见下面的链接:
详情链接

问题2:

同时在解决问题的过程中也考虑到多次重复部署带来的问题,也就是tomcat内存泄漏,Tomcat会为项目新建一个类加载器,而旧的类加载器没有被GC回收。

classloader-leak-prevention-servlet用来解决maven部署内存泄漏的问题,添加依赖到项目:

<!-- TODO 解决maven远程部署内存泄漏的问题-->
<dependency>
    <groupId>se.jiderhamn.classloader-leak-prevention</groupId>
    <artifactId>classloader-leak-prevention-servlet</artifactId>
    <version>2.1.0</version>
</dependency>

并在项目的web.xml 中添加监听器 (该listener 必须为项目的第一个监听器,否则不起作用)

<listener>
    <listener-class>se.jiderhamn.classloader.leak.prevention.ClassLoaderLeakPreventorListener</listener-class>
</listener>

附上:在pom.xml文件中,在plugins节点下添加如下plugin节点:

<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
        <!-- server、username、password对应maven的setting下的配置 -->
        <url>你的tomcatd的IP:端口号/manager/text</url>
        <server>tomcat</server>
        <username>admin</username>
        <password>admin</password>
        <!-- 重新部署时更新-->
        <update>true</update>
        <path>/${project.build.finalName}</path>
        <!-- war文件路径缺省情况下指向target -->
        <!--<warFile>${basedir}/target/${project.build.finalName}.war</warFile>-->
    </configuration>
</plugin>

用 mvn tomcat7:redeploy取代 undeploy和deploy来重新部署

利用Eclipse集成Tomcat和Maven实现Java Web应用热部署 Eclipse IDE中的Server视图是一个集成的服务器管理界面,它允许开发者安装、配置、启动和停止服务器。开发者可以将Tomcat等服务器实例直接添加到Server视图中,并在此管理Web应用的部署。在Server视图中,可以直观地看到服务器状态、启动和停止服务器以及管理部署的应用。例如,可以右键点击一个Web应用并选择“重新加载”(Reload)来实现热部署。JRebel的核心功能是监控文件系统的变化,并在变化发生时重新加载受影响的类和资源。 阅读详情

相关推荐

javase源码-classloader-leak-prevention:ClassLoader泄漏预防/保护

java源码源码类加载器泄漏预防库 如果您想避免可怕的java.lang.OutOfMemoryError: Metaspace / PermGen space ,只需将此库包含到您的 Java EE 应用程序中,它就会处理剩下的事情! 要了解有关类加载器泄漏、其原因、类型、找到它们的方法和已知违规者的更多信息,请参阅此处的博客系列: 小服务程序 3.0+ 在 Servlet 3.0+ 环境中,您需要做的就是在.war包含此 Maven 依赖项: < dependency > < groupId >se.jiderhamn.classloader-leak-prevention</ groupId > < artifactId >classloader-leak-prevention-servlet3</ artifactId > < version >2.7.0</ version > </ dependency > 如果您遇到 Servlet 3.0 模块的问题,请尝试下面的 Servlet 2.5 替代方案。 由于 ,这意味着如果您有其他 Servlet 3.0 依赖项,则此库可

Tomcat的基本使用,如何用Maven创建Web项目、开发完成部署的Web项目

Web服务器是一个应用程序(软件),对HTTP协议的操作进行封装,使得程序员不必直接对协议进行操作,让Web开发更加便捷。主要功能是“提供网上信息浏览服务”。Tomcat是Apache软件基金会一个核心项目,是一个开源免费的轻量级Web服务器,支持Servlet/JSP少量JavaEE规范。JavaEE: Java Enterprise Edition,Java企业版。指Java企业级开发的技术规范总和。

宁可枝头抱香死,何曾吹落北风中。 4332

3D视觉入门必看:深度图、点云图、IR图、RGB图像到底有什么区别?

本文深入解析了3D视觉中深度图、点云图、IR图与RGB图像的核心区别。深度图记录像素距离,是连接2D与3D的桥梁;点云图是显式的三维坐标集合;IR图感知红外光强度;RGB图像则提供颜色纹理。理解其信息维度和应用场景,是进行机器人导航、三维重建等任务的基础。

year5的博客 342

java 内存不断增加,Java Spring应用程序存在内存泄漏。系统非堆内存不断增加

I have monitor My Web application using yourkit profiler. There is major object that retain maximum size is SessionFactoryImpl, webappclassloader, and CGlib object Shows.*Does spring crone scheduler c...

weixin_31416737的博客 945

研一脑电小白日记 之 EEGLAB预处理实战指南

本文为脑电研究新手提供了一份详尽的EEGLAB预处理实战指南。从MATLAB与EEGLAB环境搭建、使用NeuracleEEGFileReader插件导入BDF格式数据开始,逐步讲解了电极定位、滤波、降采样、ICA去伪迹等核心步骤,旨在帮助初学者高效完成脑电数据预处理,为后续分析奠定坚实基础。

weixin_29230649的博客 556

BCIC IV 2a数据集实战:从MATLAB导入到EEG信号分析全流程

本文提供了BCIC IV 2a数据集从MATLAB导入到EEG信号分析的完整实战流程。详细解析了数据集结构,区分了EEG与EOG信号,并演示了信号可视化、基础预处理(滤波、分段、基线校正)等关键步骤,帮助脑机接口研究者快速上手处理这一经典运动想象数据集。

weixin_29047919的博客 468

【亲测免费】 防止类加载器泄露库(Classloader Leak Prevention Library) - 永远告别内存溢出!

防止类加载器泄露库(Classloader Leak Prevention Library) - 永远告别内存溢出! 项目介绍 Classloader Leak Prevention Library 是一个强大的Java EE应用工具,它致力于解决烦人的 java.lang.OutOfMemoryError: Metaspace 或 PermGen space 错误。只需简单地将其添加到你的项目中...

gitblog_00061的博客 628

银河麒麟V10系统grub崩溃急救指南:从光盘救援到完整恢复(附常见错误排查)

本文详细介绍了银河麒麟V10系统grub崩溃的急救方法,从使用安装光盘进入救援环境到完整恢复系统的全流程。针对不同损坏程度(轻度、中度、严重)提供了分级恢复策略,包括grub2-install和grub2-mkconfig等关键命令的使用,并附有常见错误排查表,帮助用户快速解决引导问题。

weixin_30955617的博客 483

Maven+Tomcat热部署

Maven+Tomcat热部署

qq_42410852的博客 610

YOLO26涨点改进 | 全网独家创新、检测头Head改进篇 | AAAI 2026 | 使用StripConvHead改进YOLO26的检测头,处理小目标、遮挡小目标检测有效涨点,助力高效发论文

🔥本文给大家介绍使用StripConv条形卷积改进 YOLO26的检测头,可以显著提高模型在高纵横比物体检测、目标定位和多尺度物体检测方面的表现。StripConv条形卷积能够更有效地捕捉细长物体的特征,提升定位精度,并通过简化卷积核设计减少计算冗余,优化计算效率。此外,该改进增强了 YOLO26对复杂场景和实时任务的适应能力,特别适用于遥感图像目标检测、小目标检测等领域。具体怎么使用请看全文。摘要:随着遥感物体检测的快速发展,检测高纵横比物体仍然是一个挑战性问题。

Ai缝合怪、助力小伙伴高效发论文 268

128、点云配准与ICP:经典配准算法与深度学习配准

上周调试一台双臂协作机器人,左手持结构光相机扫描桌面上的随机堆叠工件,右手准备执行抓取。问题出在“对齐”这一步——相机扫描得到的点云和CAD模型点云之间差了大约15度的旋转,导致抓取姿态计算出来直接怼到桌面上。我第一反应是“ICP跑一下不就行了”,结果跑了三分钟,误差纹丝不动,甚至越迭代越发散。后来查了日志才发现,初始位姿给得太离谱,ICP直接掉进了局部最优。这个场景太典型了——很多人以为点云配准就是调个ICP库函数,实际工程里坑比想象中多得多。今天这篇笔记,咱们把点云配准这件事从头捋一遍。

sundong_81的博客 42

配置tomcat和maven,使web项目能自动部署war到服务器

1. 编辑tomcat服务器下的conf/tomcat-users.xml,在末尾<tomcat-users>标签里面添加以下内容(可以去掉注释后修改): <role rolename="manager-gui"/> <role rolename="manager-script"/> <user username="admin" password="123456" roles="manager-script"/> <use...

爱学习饼的博客 336

什么是信噪比?信噪比越大好还是越小好?

在进行声音增强的时候,往往需要考虑声音信号和噪声的信噪比,那么信噪比是什么呢?越大越好还是越小越好,此处引入百度百科的解读: 信噪比,英文名称叫做SNR或S/N(SIGNAL-NOISE RATIO),又称为讯噪比。是指一个电子设备或者电子系统中信号与噪声的比例。这里面的信号指的是来自设备外部需要通过这台设备进行处理的电子信号,噪声是指经过该设备后产生的原信号中并不存在的无规则的额外信号(或信息),并且该种信号并不随原信号的变化而变化。 同样是“原信号不存在”还有一种东西叫“失真”,失真和噪声实际上有一

码匀的博客 7万+

基于maven的javaweb项目如何使用maven-tomcat插件实现tomcat热部署

原本当我们想运行一个web项目时我们在本地开发环境采用的方式将web容器tomcat加入到我们的ide中,然后将项目add到tomcat中启动tomcat进行访问,当我们想把项目发布到远端的测试服务器上时我们采用的方式是将项目打包然后拷贝到远端测试服务器的tomcat下面,然后启动tomcat,如果遇到错误还要重新打包拷贝,这些都能实现项目的部署,只是比较不方便而已。今天说一下使用m...

Iamn13的博客 908

通信算法之283:大疆DJI云哨系统-DJI DroneID物理层协议-解速率匹配及Turbo译码

3. 完整云哨接收机,接收灵敏度。交流: 1279682290 ,2. Turbo译码模块。1. 解速率匹配模块。

leegang12的专栏 868

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

使用maven实现tomcat热部署

Tomcat有个后台管理功能,可以实现工程热部署。 配置方法: 第一步:需要修改tomcat的conf/tomcat-users.xml配置文件。添加用户名、密码、权限。 第二步:重新启动tomcat。 这样配置完成的时候就可以对tomcat后台进行热部署了. 还有就是工作中用到较多的方式使用maven命令进行操作. 使用mave

我主要负责转载优秀的技术博文 3757

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

maven自带tomcat怎么热启_Maven添加Tomcat插件实现热部署

Maven热部署,顾名思义就是可以不影响项目在服务器中的运行情况,可以实现项目代码的更新,减少启动,编译时间,达到快速开发的目的,也不需要手动拷贝war包到远程项目,可以直接将项目以及war包部署到远程服务器。实现Maven热部署主要需要maven获得tomcat的管理权限,首先要进行Tomcat的配置,其次在pom.xml中配置tomcat插件即可实现maven热部署。配置Tomcat权限在to...

weixin_39715926的博客 331

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Maven实现tomcat热部署

Maven实现tomcat热部署兼容 tomcat7和tomcat8测试了一上午maven项目热部署到tomcat,在网上查找了不少资料,终于测试成功,写写自己的测试过程。 一、开放tomcat管理权限1.1 必须有manager项目tomcat webapps下面必须manager项目,用于管理tomcat权限操作。如果webapps下面没有该项目,则不能进行热部署。 1.2 配置tomcat用户

无德皇叔的博客 728

eclipse下实现maven项目在tomcat容器热部署方法

eclipse下实现maven项目在tomcat容器热部署方法 黄进青 2013-2-17 1、eclipse安装maven插件、svn插件 2、从svn检查maven结构web项目(可部署到tomcat下) 3、修改远程或本地的tomcat配置文件apache-tomcat-6.0.29/conf/tomcat-users.xml,添加用户,如下所示: 4、修改maven的s

HJQQINGQING的专栏 5111

使用tomcat或maven实现项目的热部署发布

在平常的项目发布过程中,我们通常使用的方式是将项目打成war包,放置在tomcat的webapps文件夹下,然后启动startup.bat文件,然而这种发布方式耗时且易出现问题。 本人查阅了网上的一些资料,将网上资料整理汇总,亲自试验成功后整理成文档,有需要的可以继续往下看。 本文分为两大块,分别是在tomcat上热部署发布项目和在项目的maven中配置热部署发布。 一、tomcat热部署发布项目 1、开发过程中,需要某些操作,就得改变某些配置文件,这里也一样,通过mstsc命令,进入到远程桌面,找到线上项

fzt12138的博客 379

Maven 插件实现 Tomcat 热部署

一、前言传统的部署项目方式:关闭 web 容器,将项目放入到 web 容器,启动 web 容器这个三个步骤。步骤不多,但是需要手动完成,频繁的操作总会让人心累。为了“解放双手”,实现自动化部署,本篇介绍通过使用 Maven 实现 Tomcat 的热部署。二、准备本次测试使用一台ip为 192.168.2.25 的虚拟机,系统为 centos 7.2,tomcat 使用 8.5 版本。2.1 配置 ...

liuningwcsdn的博客 1134

tomcat和maven实现热部署项目到服务器

背景     众所周知,我们平时将JavaEE项目开发完后,需要将项目部署到服务器的tomcat上。常用的部署方式是将项目打包成war包放到tomcat的webapps下,然后重启tomcat,然后通过ip地址+端口号访问。这样部署本身是没问题的,但问题纠结在于,如果还是在生产环境下的话,需要频繁的更改个优化项目,那么就需要频繁的将项目打war包,替换web...

Duktig的博客 845

maven自带tomcat怎么热启_详解maven tomcat plugin实现热部署

maven tomcat plugin实现热部署1、Tomcat7的用户及权限配置要实现热部署,自然就需要通过maven操作tomcat,所以就需要maven取得操作tomcat的权限,现在这一步就是配置tomcat的可操作权限。在tomcat的安装目录下,修改conf / tomcat-user.xml文件,在节点下面增加如下配置:2、Maven的server的配置在Maven的安装路径找到,修...

weixin_39876650的博客 270

Maven添加Tomcat插件实现热部署

Maven热部署,顾名思义就是可以不影响项目在服务器中的运行情况,可以实现项目代码的更新,减少启动,编译时间,达到快速开发的目的,也不需要手动拷贝war包到远程项目,可以直接将项目以及war包部署到远程服务器。 实现Maven热部署主要需要maven获得tomcat的管理权限,首先要进行Tomcat的配置,其次在pom.xml中配置tomcat插件即可实现maven热部署。 配置Tomcat权限...

starsray的博客 654

Maven+Tomcat7实现项目热部署

热部署能够在不关闭Tomcat的情况下直接将war包部署到服务器上。 修改Tomcat配置文件 需要修改tomcat的conf/tomcat-users.xml配置文件。添加用户名、密码、权限。 &lt;role rolename="manager-gui" /&gt; &lt;role rolename="manager-script" /&gt; &lt;user username="t...

Code_legend的博客 539
上一篇: Netty最佳实践之数据通信
下一篇: SpringBoot之集成通用Mapper
章 鱼
博客等级 码龄10年 203粉丝 105原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值