当前位置: 首页 > 知识库问答 >
问题:

码头中的热代码部署

贡正诚
2023-03-14

我正在编写一个 Java EE 应用程序,使用 Jetty 作为应用程序服务器,以便在开发过程中使用。虽然(重新)部署速度很快,但我希望Java代码更改能够立即反映在正在运行的服务器中,而无需重新启动。(我已经在使用“使用文件映射缓冲区”设置来查看对静态服务内容的即时更改)。

我看到过关于使用Maven Jetty插件和设置scanInterval来重新部署web上下文的问题,但这不是我想做的。我的Jetty服务器是从Eclipse中的一个Java应用程序中启动的,我希望代码更改能够立即反映在运行的服务器中,就像Eclipse中的普通Java应用程序一样。我“就地”运行代码,也就是说,不先构建和部署WAR文件。

我意识到Web应用程序有自己的类加载器,以符合servlet规范,但我不介意冒着非标准行为的风险在开发中更快地部署更改。我尝试过使用WebAppContext.setClassLoader将类加载器设置为“正常”类加载器,但无济于事。

有可能做我想做的事吗?我相信JRebel声称做到了,但是它在做什么而我没有呢?

共有2个答案

扶文光
2023-03-14

即使是普通的Java应用程序也需要重启才能看到代码的变化。

基本上你的选择是:

  1. 重新启动码头(你说你不想要那个)。
  2. 对应用程序更改进行 Jetty 扫描,并在检测到更改时允许热重新部署(您说过您不希望这样)。
  3. 附加一个远程调试器,然后进行热插拔代码更改(请参阅Amila的答案)。这仅限于方法体的变化,因此没有真正的用处。
  4. 使用JRebel,它提供了一个有用的热插拔实现,也可以为许多框架获取配置更改。
  5. 使用一个Web框架,该框架实现了基于丢弃类加载器(例如Tapestry或民用)的专有热插拔实现。
胡永逸
2023-03-14

如果从Eclipse使用远程调试连接到Jetty,热代码替换应该是可能的。

通过将以下内容添加到Jetty启动脚本来启用远程调试:

-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8787
 类似资料:
  • 问题内容: 我目前正在使用Jetty hightide vesion 7作为独立服务器。我有一个简单的Web项目,上面有几个jsp和后备类,目前正以未爆炸的方式部署到JETTY_HOME / webapps目录。 当前,jetty可以轻松获取任何静态的jsp / html更改。如果我理解正确,我可以配置我的应用程序,以便码头可以在不重新启动服务器的情况下进行任何类更改?我目前在我的jetty-we

  • 在 OpenResty 中,提及热加载代码,估计大家的第一反应是 lua_code_cache 这个开关。 但 lua_code_cache off 的工作原理,是给每个请求创建一个独立的 Lua VM。即使抛去性能因素不谈,考虑到程序的正确性,也不应该在生产环境中关闭 lua_code_cache。 那么我们是否可以在生产环境中完成热加载呢? 代码有变动时,自动加载最新 Lua 代码,但是 Ng

  • 8.5.1 代码介绍 热图代码用于加载SiteMonitor JS热图脚本,在网页上正确添加热图代码后,即可实现收集用户的点击行为,利用热图呈现,颜色越深的区域表示点击越多,颜色越浅则表示点击少。 8.5.2 代码导出 后台路径:高阶报告-热图分析,输入分组名称和页面URL后,点击保存并获取代码即可。 导出的代码样例 热图基础代码: stm_clicki('require','heatmap',

  • 我有一个关于在eclipse中使用maven在Weblogic上运行Java EE应用程序的基本问题。 我使用OEPE(Oracle Enterprise pack for Eclipse),它附带了一些插件,如m2e和wtp。据我所知,这些插件读取pom文件,并基于它们构建jar、war和ear文件。 我现在做的是这样的: 我选中build automatically选项,让这些插件创建我的EA

  • 最简单的部署 git clone git@github.com:i5ting/shop-api.git git clone git@github.com:i5ting/shop-admin.git git clone git@github.com:i5ting/shop-h5.git ftp上传 前提是在服务器上部署ftp服务器 推荐使用gulp和ftp部署 https://github.com

  • 本文向大家介绍Android 通过代码设置、打开wifi热点及热点连接的实现代码,包括了Android 通过代码设置、打开wifi热点及热点连接的实现代码的使用技巧和注意事项,需要的朋友参考一下 用过快牙的朋友应该知道它们在两天设备之间传输文件的时候使用的是wifi热点,然后另一台便连接这个热点再进行传输。快牙传输速度惊人应该跟它的这种机制有关系吧。不知道它的搜索机制是怎样的,但我想应该可以通过热