【问题标题】:How to stop only one app?如何只停止一个应用程序?
【发布时间】:2017-07-06 20:49:21
【问题描述】:

Jetty 正在运行来自 webapps 的 3 个站点。其中一个是“静态”的 Angular 站点,另一个是一个巨大的 Java 应用程序。

通常,我使用 Ctrl + c 来停止 Jetty,在我的 Angular 站点上进行更改,然后使用

启动 Jetty
java -jar start.jar -DCommon.properties.path=C:\Jetty

如果我在 Jetty 运行时尝试编辑文件,则会注入随机的、有缺陷的代码,从而破坏网站。

所以这个过程非常繁琐。 Java 应用程序需要 15-20 秒才能加载。因此,如果我忘记了斜线,大约需要一分钟才能将其关闭并重新启动。

有没有办法我可以只停止/启动webapps 中的一个,而不是同时停止/启动所有 3 个?

【问题讨论】:

    标签: jetty


    【解决方案1】:

    您似乎在使用 Windows。

    您遇到的问题与 Microsoft Windows 独有的传统上不稳定的文件系统锁定行为有关(没有其他运行 Java 的操作系统可以这样做)

    查看官方文档 https://www.eclipse.org/jetty/documentation/current/troubleshooting-locked-files-on-windows.html

    如果您遵循该文档中的建议,则无需停止/启动特定的 web 应用。

    重要提示:请注意,文档中的建议仅适用于 DEVELOPMENT TIME,对于生产来说不是一个好的常规配置。


    从 OP 插入:

    我按照上面文档中的说明进行操作,并且成功了!这是我所做的:

    1. 找到您的 webdefault.xml 文件。

      • 我的在 C:\Place_where_Jetty_was_installed\Jetty\etc\
    2. 打开并搜索UseFileMappedBuffer

    3. 找到这个: <init-param> <param-name>useFileMappedBuffer</param-name> <param-value>true</param-value> </init-param>

    4. 将参数值设置为 false <param-value>false</param-value>

    话虽如此,如果你还想走这条路,有两种方法......

    1.使用热重载

    为您的“重新加载”网络应用创建一个可部署的 XML,并 touch 它以热重新加载该 1 个网络应用。

    文件:${jetty.base}/webapps/myapp.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN"
              "http://www.eclipse.org/jetty/configure_9_3.dtd">
    <Configure class="org.eclipse.jetty.webapp.WebAppContext">
      <Set name="contextPath">/myapp</Set>
      <Set name="war"><Property name="jetty.webapps"/>myapp.war</Set>
    </Configure>
    

    然后让码头重新加载它只是......

    $ touch /path/to/myjettybase/webapps/myapp.xml
    

    这个标准 Posix 命令将更新该文件的时间戳,Jetty 将看到该时间戳为“嘿,该文件已更新,我必须重新加载它”

    2。使用 JMX 停止/启动特定的 web 应用

    在 JMX 模块处于活动状态 (--module=jmx) 的情况下启动 Jetty。

    启动 JMX 控制台(JDK 附带 jmcjconsole)并连接到正在运行的 Jetty 实例。为您的特定 web 应用找到 MBean,并在该特定 web 应用上使用 stop()start() 命令。

    【讨论】:

    • 非常感谢。我还有一个小问题:是否可以更改 webdefault.xml 中的某些内容以允许所有 http 方法(POSTPUTDELETE)?
    • 那将是一个新问题
    • 好的,就是这样。谢谢! stackoverflow.com/questions/44979617/…
    猜你喜欢
    • 1970-01-01
    • 2014-02-24
    • 1970-01-01
    • 2012-10-23
    • 2013-03-26
    • 2016-11-29
    • 2013-12-24
    • 1970-01-01
    • 2018-09-05
    相关资源
    最近更新 更多