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 刷新

java web 刷新_Java Web项目的保存和刷新相关推荐

  1. 【源码+教程】Java桌球游戏_Java初级项目_Java练手项目_Java项目实战_Java游戏开发

    今天分享的Java开源游戏项目是桌球游戏,初学者也可以用来练习喔~课程详细讲解了一个桌球游戏的编写思路和流程,即使你刚学Java没多久,也可以跟随该教程视频完成属于你自己的桌球游戏!同时,还可以加深和 ...

  2. Java Web项目的保存和刷新

    如何配置计算机以保存并刷新Java Web项目? 当您向开发人员提出此问题时,答案以"哦,好吧--"开头,并以某种可行的方式继续描述. 每个人都有自己的方式. 首先–为什么需要这个 ...

  3. java 实现 web 客户端_Java web客户端和服务器端交互的原理

    Java web客户端和服务器端交互的原理 其实HTTP客户端和服务器端的交互原理很简单:即先是浏览器和服务器端建立Socket无状态连接,也就是短连接,然后通过IO流进行报文信息(这个报文是严格遵循 ...

  4. java web环境_java web

    HTTP Status 500 - Request processing failed; nested exception is java.lang.NullPointerException HTTP ...

  5. java web 教程_Java Web服务教程

    java web 教程 Welcome to the Java Web Services Tutorial. Here we will learn about web services, useful ...

  6. java session原理_java web开发—session的工作原理总结

    session的工作原理总结 一.什么是session session是一次浏览器和服务器交互的会话,在jsp中,作为一个内置对象存在.我的理解,就是当用户打开网页时,程序会在浏览器中开辟一段空间来存 ...

  7. java web 保护_java web项目请求控制及简单漏洞防范

    背景:当时项目没用什么框架,过滤器,请求限制等都需要自己手写. 1.请求加时间戳 在后台过滤器中可以加判断,如果请求时间戳与服务器时间相差太大,可以返回异常,具体情况可以具体使用. 请求中加时间戳的示 ...

  8. java错误页面_Java web 项目关于错误页面的处理

    第一步:你需要建立一个显示错误信息的jsp页面,内容如下: 系统执行发生错误 系统执行发生错误,信息描述如下: 错误状态代码是:$ {pageContext.errorData.statusCode} ...

  9. java外包项目管理_Java web 项目求外包,运维系统和决策分析系统,最好有现成的系统能改改...

    大概情况是,项目中有这两个周边的模块,验收的时候必须核对,所以要求中提出的功能都要有.人手不太足,看看大家谁手头有类似的产品,或者擅长这方面的开发,能支持我们一下. 做过类似项目的兄弟应该能知道是个什 ...

最新文章

  1. 【专访英特尔高级首席工程师戴金权】普通数据工程师,如何玩转深度学习?
  2. command对象提供的3个execute方法是_21个极大提高开发效率的VS Code快捷键
  3. 新晋 ACM Fellow 陶大程,8 篇 NeurIPS 论文详解
  4. 条件随机场(CRF)和隐马尔科夫模型(HMM)最大区别在哪里?CRF的全局最优体现在哪里?
  5. 撰写科研海报(poster)的必看技巧
  6. OpenCV——释放时错误[SourceReaderCB::~SourceReaderCB terminating async callback]解决方案
  7. 718. Maximum Length of Repeated Subarray 最长重复子数组
  8. guns java_guns——一个简便的后台管理系统
  9. 详解centos7 YCM YouCompleteMe自动补全安装,亲测成功
  10. k8s访问控制--理解RBAC和OPA
  11. [Ynoi2012]D1T3
  12. 对计算机组装和维护课的总结,计算机组装与维护教师工作总结
  13. 滑轮滚动到页面底部ajax加载数据的实例
  14. Azure角色管理技巧和工具
  15. Lock-Free / Lockless 相关术语
  16. Python变量和字符串详解
  17. 论文笔记_CV_AD_Visual Perception for Autonomous Driving
  18. 202019 大战360弹窗广告
  19. 机器学习之支持向量回归(SVR)
  20. 政务大数据的上下文范围

热门文章

  1. json-lib的字符串自动转换坑
  2. 某同学工作之后的感悟
  3. SpringMVC的上传与下载
  4. 考研英语二大纲22年考研
  5. 263. 丑数---LeetCode---JAVA
  6. 153. 寻找旋转排序数组中的最小值---LeetCode---JAVA
  7. Mybatisplus 自动生成字段 强制覆盖 null或者空字符串也覆盖
  8. 第10章尚硅谷SpringBoot检索
  9. eclipse maven 项目发布到tomcat 报错 Failed to scan JAR [file:/C:/xxxxx.jar] from WEB-INF/lib
  10. Angular项目打包到nginx部署过程