是什么限制了“热部署”?

发布于 2024-07-24 07:16:41 字数 192 浏览 11 评论 0原文

当 Jetty 上有本机 Java 代码时,您可以执行热部署。

例如,这使您可以更改 servlet 代码,而无需重新启动服务器即可查看应用程序更改。

但是,如果您在 Java 之上运行脚本语言(Groovy、JRuby、Jython),您将无法再执行热部署(至少在 Jetty 上)。

这可能是什么技术原因?

You can perform hot deploy when you have native Java code on Jetty.

This allows you, for example, to make changes to your servlet code without requiring a restart of the server to see your application changes.

However, if you run a scripting language on top of Java - Groovy, JRuby, Jython - you can no longer perform hot deploy (at least on Jetty).

What could be the technical reason for this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

笑饮青盏花 2024-07-31 07:16:41

我可以想到两个原因:

  1. 如果只有您的脚本发生了更改,您的应用程序如何知道它必须重新加载脚本? 它们被作为普通资源处理。 容器不知道由于资源的变化而必须重新部署 servlet。
  2. 另一种可能性是您将 ScriptEngine 作为实例变量存储在 servlet 中。 因此,servlet 无法被替换,因为对实例对象的依赖无法重构。

I can think of two reasons:

  1. If only your script has changed, how does your application know it has to reload the scripts? They are handled as normal resources. The container does not know that a servlet has to be redployed because of a change in the resources.
  2. Another possibility is that you store the ScriptEngine in the servlet as an instance variable. So the servlet cannot be replaced because of this dependency on the instance object which cannot be reconstructed.
§对你不离不弃 2024-07-31 07:16:41

您评估过 JavaRebel 吗? 他们声称部署是他们的事(在 Tomcat 下工作得很好,也必须在 Jetty 下工作)。

Have you ever evaluate JavaRebel? They calim that hor deployment is their business (works well under Tomcat have to work under Jetty as well).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文