java web 刷新_Java Web项目的保存和刷新

java web 刷新

如何配置计算机以保存并刷新Java Web项目? 当您向开发人员提出此问题时,答案以“哦,好吧……”开头,并以某种可行的方式继续描述。 每个人都有自己的方式。

首先–为什么需要这个? 因为执行复制和重新启动服务器是提高生产率的杀手-浪费大量时间。 如果不提高项目与容器同步的工作效率,即使是进行简单的修复,也可能需要完整的构建和部署周期才能进行测试。 这可能需要很多时间,具体取决于项目的规模。

我会写下一些内容,以补充我的StackOverflow答案 :

  • IDE集成– IDE可以选择添加本地服务器并将项目部署到该服务器。 这需要附加的插件,配置哪些工作空间文件在servlet容器中的什么位置,并且并不总是有效。 当图片中有Maven时,它要么不起作用,要么需要另一个插件(如我的回答中所述)
  • 您使用一些工具来同步目录结构。 在Eclipse中,有FileSync插件 ,您可以通过它配置哪些工作空间文件在servlet容器中的位置。 可能存在执行相同操作的其他工具(例如unison ),或者您可能已经编写了一些脚本或插件来执行此操作。
  • 从maven运行servlet容器(如果使用maven)–使用tomcat插件或jetty插件 。 缺点是,要在调试模式下运行,您需要附加外部调试器(而不是使用内置的IDE服务器集成)。 并且它需要插件配置。 另外,请记住,如果使用码头(较快速的选项)进行开发,则如果生产容器为tomcat,则行为可能会有所不同。 没有太多麻烦,但仍然要牢记一些东西。
  • 手动复制项目文件–一开始听起来并不可怕,但随后又开始困扰您–毕竟,这是一项要求自动化的任务。

因此,现在您已将类文件和资源(css,javascript,图像,配置文件)复制到servlet容器。 但是,为了使它们起作用,您需要一些HotSwap功能。 也就是说,让jvm重新加载类定义。 有四个选项:

  • 常规HotSwap –只需在调试模式下运行servlet容器即可。 每当更改类文件时,就可以交换方法的主体。 但是,更改方法或类签名需要重新启动。 我一直使用此选项,但并没有那么痛苦–在所有方法签名重新定义和重构都不会经常发生之后,即使这样做了,也可以重新启动服务器,因为您不必专注于使某些特定功能起作用。
  • DCEVM – VM增强功能,允许完全重新加载类。 我没有使用过它,但是如果它可以正常工作,它应该可以解决上面提到的签名重新定义问题。
  • JRebel –商业替代品。 我从来没有使用过它,我听说过它很好,而且我知道还有很多额外的功能,可以让您在各种框架中使用它,例如,重新配置spring上下文不需要重新启动。 我不认为这些事情经常发生,所以我从不推荐JRebel(商业化),但这是您应该考虑的重要选择。
  • 每次更改都重新启动服务器。 如果项目很小,这将花费很少的时间,因此可以选择。 但是我什至不建议在小型项目中使用它,因为至少HotSwap易于配置(而且您仍然需要调试模式)

如此众多的选择–在Java世界中如此典型。 他们或多或少地工作良好。 但是,我决定再添加一个选项,几乎具有零配置– aardWARk 。

通过将aardwark.war文件放入您的tomcat中并对其进行重命名来工作,以便该名称包括项目目录的路径,并处理同步化。 请注意,这是添加到上面第一个列表的选项。 对于热交换,您仍然需要第二个列表中的三个选项之一。 在项目页面上有一个更详细的设置指南,但有几点需要强调:

  • 它仅适用于Maven项目。 为了具有零配置,需要使用Maven的Convention-over-configuration
  • 它独立于IDE,独立于servlet容器。
  • 它完成了我认为上面没有其他解决方案可以做的事情(可能是JRebel之外的解决方案)–它还将同步依赖于Maven的项目。 通常,您有一个多模块项目,其中一些项目打包为jar,而其他(网络)项目则依赖于它们。 但是,您需要能够在“核心”模块中更改类,并立即查看webapp中的更改。 这将意味着重新包装并重新装入罐子。 AardWARk只需解析pom,找到相关项目并将其类复制到classpath,即可覆盖现有定义
  • 支持多个项目,还可以通过属性文件进行配置(如果您不想或无法命名war文件来包含项目路径)
  • 更改pom时不会同步jar文件-您需要重建并重新启动。 嵌入Maven和运行依赖关系目标的一些解决方法,但是如果添加了新的jar,则无论如何都需要重新启动。
  • 它之所以被称为aardWARk,有一个简单的原因-最好在您的项目之前加载此war文件。 不一定,因为仅同步jar文件才需要,但是最好同步。 Servlet容器不能保证Webapp的加载顺序,但是很可能是按字母顺序选择的-因此有点a跷(出于明显的原因,用war代替var)。

我希望它是一个有用的工具,如果人们开始使用它并提供反馈,我将感到非常高兴。

参考: Bozho的技术博客博客中的JCG合作伙伴 Bozhidar Bozhanov的 Java Web Project 保存和刷新 。

翻译自: https://www.javacodegeeks.com/2013/11/save-and-refresh-with-java-web-projects.html

java web 刷新

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

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

相关文章

【数字信号处理】希尔伯特变换系列3之解析信号(含MATLAB代码)

希尔伯特变换&解析信号 你可能从未将DFT应用于复信号,因此你的数据将是实的,这样做的一个影响是DFT是对称的。在许多应用中,正频和负频分量都必须被处理——参见早期理想的DFT滤波,其中正频和负频分量都必须以相同的方式处理,以便滤波后的数据是实的(根据需要)。然而…

Java SE 11(18.9)中的API更新

Java SE 11也被命名为18.9(基于使用发布年份和月份的新命名方案),预计将在9月的最后一周发布GA。 频繁发布新JDK版本的新方法是允许语言创建者引入新功能,并向开发人员社区更快地进行API更新。 通常,API更新不会引起注…

【数字信号处理】卷积和乘法系列1之引言(含MATLAB代码)

引言 要了解 DSP 的许多方面,以及使用傅里叶分析 (FA) 的其他应用,以下几点很重要 了解卷积的过程要知道时间/频率域中的卷积/乘法 等价于 频域/时间域中的乘法/卷积会应用这些知识卷积是一个会引起很多混淆的过程,但使用采样数据(离散)比使用连续时间数据更容易理解。这是…

【数字信号处理】卷积和乘法系列2之AM调制、幅度谱和相位谱(含MATLAB代码)

关注公号【逆向通信猿】更精彩!!! 案例2的应用——幅度调制(AM) 能够预测卷积两个信号的结果是很有用的。一个明显的例子是 AM 调制(参见上一节 和下面的图 1),其中载波通过混合(混频)由基带信号调制。在频域中,这两个信号的频谱是卷积的。 在图1中,显示了幅度调制…

java方法传对象参数_Java方法中的参数太多,第2部分:参数对象

java方法传对象参数在上一篇文章中 ,我研究了与方法和构造函数的长参数列表相关的一些问题。 在那篇文章中,我讨论了用自定义类型替换基元和内置类型以提高可读性和类型安全性。 这种方法使方法或构造函数的众多参数更具可读性,但并没有减少参…

VB语言与测量程序设计之水准网平差程序(任务8-3含代码,完整工程文件见CSDN资源)

一、程序总体设计 二、程序界面设计 对象属性设置 三、程序代码 矩阵计算类代码 文件名:Matrix.cls 操作矩阵的类 Matrix Option Explicit Const eps As Double = 0.00000001 缺省精度 Dim nRo

【数字信号处理】卷积和乘法系列3之傅里叶变换对

关注公号【逆向通信猿】更精彩!!! 声明:底部的小广告标签并不是博主所加!! 傅里叶变换对(Fourier Transform pairs, FTP) 我们考虑的第一个FTP从时间域中的梳状函数开始,这是一个简单地由相同幅度的规则放置的“冲激(spike)”组成的信号。下面的程序在时域中生成这样…

Gradle教程

1.简介 在本课程中,我们将学习Gradle ,它是一个构建工具和一个依赖管理系统,与Maven和Ant非常相似,并且是专门为构建基于Java的项目而设计的。 与Maven和Ant构建系统不同,Gradle不使用XML。 它实际上是基于Groovy构建…

【定时同步系列6】Gardener误差检测算法原理

关注公号【逆向通信猿】更精彩!!! 引言 离散时间符号定时同步方法 如下图所示为比较常用的一种符号定时同步的离散时间方法,通常由三个基本单元组成离散时间锁相环,分别为:定时误差检测器(TED)、环路滤波器和插值控制。其中,插值器和TED作用相当于鉴相器,插值控制相…

glassfish_RIP GlassFish –感谢所有的鱼。

glassfish我们都听说过。 昨天,JavaEE和GlassFish的官方路线图更新已发布 。 从标题开始,整个帖子基本上是关于一件事的:今天我们知道的GlassFish Server已从完整的产品转为玩具产品。 从太阳到Oracle的漫长道路 从一开始,GlassF…

【定时同步系列7】位(符号)定时同步之模1插值控制和递归插值控制原理

关注公号【逆向通信猿】更精彩!!! 引言 本节主要讨论符号定时同步结构中的插值控制模块,如下图所示,插值控制模块的目的是为内插器提供第 k k k个基点索引 m ( k ) m(k)

活性GWT

介绍 在过去的4到5年中,反应式编程的普及程度得到了极大的提高。 这可以告诉我们,反应性应用程序的用例现在比以往任何时候都有效。 后端系统上的压力增加了,因此需要用最少的资源来处理这种压力。 响应式编程被认为是在减少资源消耗的同时提…

【数字信号处理】卷积和乘法系列3之测不准原理

关注公号【逆向通信猿】更精彩!!! 声明:底部的小广告标签并不是博主所加!! Heisenberg测不准原理 信息在时域中的扩展(尖峰之间的距离)与其在频域中的对应扩展之间的这种关系是Heisenberg不确定性原理的一个例子。时域中的扩展(方差)乘以频域中的扩展具有不能被突破的…

【数字信号处理】卷积和乘法系列3之傅里叶变换对II

关注公号【逆向通信猿】更精彩!!! 声明:底部的小广告标签并不是博主所加!! 采样 傅里叶变换对(FT)很重要的原因是,如果有一个连续时间 (CT) 信号,则可以通过将信号乘以梳状函数来对其进行采样,产生的样本将只是尖峰处的值。采样过程产生离散时间 (DT) 信号,因为采…

使用密钥加密码加密_创建基于密码的加密密钥

使用密钥加密码加密本文讨论了创建基于密码的加密PBE密钥。 首先提醒您以前的要点–通常,在实际操作中,应将PBE密钥用作主密钥,该主密钥仅用于解锁工作密钥。 这具有三个主要优点: 您可以有多个密码,例如&#xff0c…

【定时同步系列8】QPSK基带调制+Gardener定时误差检测+解调误码率曲线之MATLAB并行仿真姊妹篇一

结果预览 误码率曲线 关于反馈型定时同步技术的原理已经陆陆续续讨论了好久了,涉及的各个细节内容较多,且不容易理解,整个流程框图如下所示: 符号定时同步的离散时间方法(异步) 其中, interpolator模块在博客: 【定时同步系列5】Farrow内插器结构原理和MATLAB实现 TED模…

【定时同步系列9】QPSK基带调制+Gardener定时误差检测+解调误码率曲线之MATLAB并行仿真姊妹篇二

关注公号【逆向通信猿】更精彩!!! 上一篇主要对Gardener定时算法进行了MATLAB仿真,其中插值控制字 W ( n ) W(n) W(n)作为环路滤波器的输出,采用迭代的方式进行更新,这也是《数字调制解调技术的MATLAB与FPGA实现》书中代码所采用的的方法! 对于这一点,此次采用另一种…

VS下一种很好的远线程注入的dll调试方法

一、Detorus-master的编译 下载源代码 https://github.com/microsoft/detours 用管理员身份启动 x64 Native Tools Command Prompt for VS 2017 或 x86 Native Tools Command Prompt for VS 2017 用cd命令进入到Detours-master目录下,分别运行以下命令: call "D:\Pr…

eclipse 隐藏项目_前5个有用的隐藏Eclipse功能

eclipse 隐藏项目Eclipse是野兽。 仅凭其力量才能超越其神秘感的设备。 有人将其称为连续体跨功能器 。 其他人则称它为透湿器 。 是的,它是如此之大,需要花费数年才能掌握。 然后,您的经理出现并告诉您:我们正在使用NetBeans。 …

vs2017+qt5.12 未将对象应用设置到对象的实例问题 -解决方法

环境:Win7 VS2017 Qt5.12 使用VS2017的 Qt VS Tools 打开Qt Example下的pro文件时出现如下错误提示: 在这里插入图片描述 查看.qmake.stash 文件如下: 在这里插入图片描述 QMAKE_CXX.QMAKE_MSC_VER 1200 这个配置是问题的根源 经过一天的艰…