【问题标题】:Tell Jetty to reload on webapp change, not context.xml change告诉 Jetty 在 webapp 更改时重新加载,而不是 context.xml 更改
【发布时间】:2011-07-23 09:46:51
【问题描述】:

我有一些 context.xml 的码头运行:

<?xml version="1.0"  encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
      <Set name="war">path/to/webapp</Set>
      <Set name="contextPath">/</Set>
</Configure>

(路径不是默认的。) webapp 在每次更改时都会重新构建,但我仍然需要伪造对 context.xml 的一些写入权限,以使 jetty 重新加载 webapp。

有没有办法告诉码头在更改时重新加载 web 应用程序?

【问题讨论】:

  • 发现这个问题是因为我想知道完全相同的事情。 Jasper 你知道怎么做吗?
  • 我也对解决方案非常感兴趣(不涉及 Eclipse 或任何其他重量级第 3 方应用程序)。
  • 目前还没有找到解决办法。

标签: java xml web-applications jetty


【解决方案1】:

贾斯珀,

我找到了一种方法来完成这项工作(感谢this question)。如果您在调试模式下运行 Jetty 并将 Eclipse 调试器连接到它,VM 将立即热交换类更改。

使用 Jetty 运行(我使用的是 Jetty 8 w/JDK 6):

java -agentlib:jdwp=transport=dt_socket,server=y,address=8000,suspend=n -jar start.jar

然后在 Eclipse 中创建一个标准的远程调试配置,如下所示:

然后点击“调试”。即使您不打算调试任何东西,将调试器连接到远程 Jetty VM 也会导致实时部署类更改。

您应该注意的唯一一件事是 VM 热交换类的能力的限制。类的“形状”不能改变,因此任何新定义的类成员或新方法都需要重新加载 Web 上下文(只需“触摸”上下文的 XML 文件,Jetty 就会重新加载它)。

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-28
    • 2013-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多