问题标签 [hotdeploy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
708 浏览

tomcat - Tomcat7:使用爆炸战争的热部署(如Grails)

我正在尝试在 Tomcat 中为 Java/Spring Web 应用程序构建开发环境。我最近使用了 Grails,如您所见,在 Grails 中有一个文件扫描器,它可以自动拦截 Java/Groovy 文件上的更改,并在 Tomcat 服务器上进行热部署。

我查看了 Grails 源代码,可以看到它使用的是 Tomcat7 嵌入式服务器,但我无法理解热部署是如何工作的。

它不使用标准的 Tomcat7 上下文重新部署功能。

有人知道 Grails 热部署是如何工作的吗?

0 投票
1 回答
499 浏览

deployment - Ofbiz 热部署未触发

我在 hot-deploy 文件夹中添加了一个 ofbiz 组件。这是一个工作组件(在浏览器中启动它并且一切正常)。但是,在检查文档后,我希望 ofbiz 运行时环境能够识别 java 文件中的新更改并为新更改的组件启动热部署。

我还在ofbiz_home/framework/base/config/ofbiz-containers.xml 中添加了以下属性:

尽管如此,热部署并没有被触发,我必须停止并重新启动整个 ofbiz 应用程序才能看到 java 文件中所做的更改。我错过了什么?谢谢!

0 投票
2 回答
14616 浏览

java - Tomcat 和 OSGi

我想知道是否可以在 Tomcat 实例中嵌入像Karaf这样的 OSGi 容器。根据这个 SO question和其他一些问题,这似乎是可能的,但我似乎找不到任何关于如何做到这一点或需要注意哪些陷阱/警告的可靠细节。

所以:

  1. 是否可以在 Tomcat 中嵌入 OSGi 容器,以便我可以随时将 OSGi 包热部署到该容器,而无需重新启动 Tomcat?
  2. 如果上面 #1 的答案是“是”,那么在 Tomcat 中嵌入 OSGi 会暴露哪些系统服务/端口?我问是因为我想将 OSGi 部署在托管在我没有管理员权限的 Java PaaS 上的 Tomcat 服务器中。而且我想知道 - 当我尝试将嵌入式 OSGi 容器部署到 Tomcat 时,它是否会尝试开始侦听端口,或者可能开始对本地文件系统执行某些操作。如果是这种情况,我可能会收到安全/权限错误。

提前致谢!

0 投票
2 回答
1284 浏览

osgi - OSGI Apache felix - 热部署支持

一点背景知识:我们正在使用 OSGI 的 Apache Felix 实现来进行 Web 开发(Adobe CQ5 又是基于 apache felix 构建的)。我们有几个自己的包(大约 10 个),每个包都配置为一个项目。

问题:在开发生命周期中,我们对包进行更改,然后使用 ant 脚本创建包并将其部署在 felix 中。我想知道是否有某种方法可以热部署我在开发模式下所做的更改,从而节省开发人员的时间。

根据我的研究,我们可以使用 felix 文件安装,它会监视文件夹中任何捆绑包的更改,并可以自动部署它们。但这再次意味着我需要运行 ant 脚本来构建 jar 文件并将其移动到文件安装正在监视的自动部署文件夹中。有没有更好/更快的方法来实现这一目标?该脚本目前需要大约 10 秒(大约)来编译类,创建 osgi 特定的元数据文件,将类+元数据捆绑在一个新的 jar 中。有没有办法进行热部署,以便我对 java 文件所做的任何更改都会自动反映在包中?

非常感谢

0 投票
2 回答
1882 浏览

eclipse - 使用 Gradle+Eclipse 时在 Jetty 上启用热部署的最佳方法

我习惯了 mvn,但我正在为一个小型 Web 开发项目测试 Gradle (v1.8)。

我注意到 Jetty Gradle 插件支持自动扫描和热部署,所以我启用了它。我的目标是每次更改控制器等时从 Eclipse 重新编译并让 Jetty 重新加载上下文。

但是,这不起作用,主要是因为 Gradle 编译输出转到build/,但是 Gradle Eclipse 插件创建了一个 .classpath 配置,将所有 Eclipse 输出定向到/bin(甚至混合测试和主源文件夹)。

有办法吗?...

  1. 在单独的控制台上运行 graddle jettyRun。
  2. 在 Eclipse 上保存修改后的类(触发编译)
  3. 看到 Jetty 获取更改并重新加载上下文。

根据我的研究,我已经确定了三种解决方法,但它们都没有解决上述问题(我发布它们以防您有相关评论或更多建议)

  1. 调整 Gradle Eclipse 配置以将测试和主要构建输出定向到 Gradle 使用的同一目录(使用此处看到的模式)。有些人不建议这样做,因为这意味着使用两种不同的编译系统,可能会相互干扰。
  2. 使用 Gradle eclipse-wtp 插件生成 WTP2 配置,并使用 Eclipse 的“Run AS -> Run on Server”。这实现了热部署/迭代目标,并使两个系统(IDE 和 Gradle)保持隔离。但是,您需要在 Eclipse 上设置服务器。
  3. (不是真正的解决方法):我已经测试了 Spring 的 Eclipse 构建(STS)Gradle 集成,但是似乎集成专注于项目设置,虽然 Gradle 构建可以自动触发,但 Eclipse 编译仍然重定向到 bin/ .
0 投票
0 回答
773 浏览

java - 当项目阶段为生产时,重新部署对 JSF 页面(xhtml)的更改

我已经将我的 JSF 项目阶段设置Production为测试一些在项目阶段运行时无法完成的东西Development。现在,当我对 jsf 页面(即xhtmls)进行更改时,这些更改不会立即可见,即使Compile on save&Deploy on save都已启用。相反,我被迫做一个干净的项目,重建项目并重新部署,这肯定需要很长时间,才能对 xhtml 进行小幅更改。

那么有没有比 this(:P) 更好的方法来使更改更快地可见呢?

我也使用 JRebel,但它不适用于生产模式,即使已设置生产模式,它也会将其覆盖为开发模式。

0 投票
1 回答
668 浏览

jsp - tomcat7-maven-plugin - jsp/html 未部署

使用 tomcat 插件“tomcat7-maven-plugin”,我试图让“热部署”与嵌入式 tomcat 一起工作(使用 tomcat7:run)。

我在 Eclipse 下使用典型的 Maven Web 应用程序配置。从现在开始,我可以调试我的 java 类,它们会在代码更改时自动重新部署

但是我的 html 和 jsp 没有得到 * re *deployed (${basedir}/src/main/webapp)。

(我使用的是原型“Thymeleaf Spring Maven Archetype”)。

知道如何在更改时重新部署 html 和 jsp 吗?

0 投票
1 回答
304 浏览

ofbiz - Ofbiz 热部署/缓存冲突

我正在 ofbiz 的hot-deploy文件夹中开发一个新组件。

关于工作流程,当在类中进行新的修改时,我从不同的终端.java运行组件的命令。ant build

重建完成后,日志通知我Controller已重新安装我的组件。但是,所做的更改不会反映在应用程序中。

但是,有一种情况是类被正确重新加载并且应用程序行为符合修改。如果该类从未被ClassLoader(从未访问过)加载,则修改是可见的。这让我认为类 / jar 缓存在应用程序的某个地方,并且没有考虑新的更改(因此首先完全违背了热部署的想法)。

这是实际问题还是我错过了其他东西。有没有办法禁用这种缓存?

0 投票
0 回答
64 浏览

jetty - Jetty 热重新部署能否在不中断服务的情况下工作?

我正在使用 Jetty 9.0.5 运行一个网络应用程序(我可以更新,9.1.2 是我写这篇文章时的最新版本)。我有Jetty 文档中描述并在etc/jetty-deploy.xml. 我使用 Jetty xml 文件来定义我的 Web 应用程序上下文,因此当我将新代码推送到我的生产服务器时,我会myapp.war使用rsync然后触摸该文件来上传一个新myapp.xml文件。这工作得很好,但是应用程序会在几秒钟内抛出一个NullPointerException或其他奇怪的东西,并且一些用户似乎正在获取损坏的静态服务文件(.js来自战争的文件),因此他们必须刷新浏览器的缓存以供应用程序使用再次工作。

这应该完美地工作,还是您期望像这样短暂的死期?

我没有把它myapp.war放在webapps目录中(只有那个在myapp.xml那里)并且explodeWarstrue部署器中。

0 投票
1 回答
305 浏览

java - Web 应用程序模块的热插拔

我有一个在 servlet 容器 (Tomcat) 中运行的 Web 应用程序。我的计划是使用热插拔来向正在运行的 Web 应用程序添加和删除其他模块。这些附加模块只包含一些业务逻辑,但不包含任何与 Web 相关的东西,例如 servlet、JSP 页面或 HTML 文件。

做这个的最好方式是什么?

为了使用 OSGi,我考虑过从 Tomcat 切换到 Glassfish。我还考虑过将 Apache Felix 与 Tomcat 一起使用。

有哪些替代方案?