终止在Eclipse中运行的Maven-Jetty-Plugin



我正在使用maven-jetty-plugin快速运行和调试WebApp,我正在开发Eclipse/m2eclipse。它开始正常,我可以完全使用调试器,但是我不能优雅地停止应用程序。

当我在控制台视图中执行ctrl c时,尽管启动了"分配控制台",但它却什么都不做。

在简单的Java项目中,CTRL C选项正常工作(在Windows上测试)。因此,似乎一些远程/嵌入式JVM问题。我的应用程序使用持久的JMS队列,因此每次重新启动后,我需要手动杀死另一台服务器上的会话。这不是很敏捷。

有人知道这个问题的根源是什么?也许有一些已知的解决方法?

如果您使用M2eclipse插件,则可以直接从Eclipse运行maven。

1转到您的调试配置,然后在Maven构建下创建一个新的条目。
2给它一个名字。
3选择您的Maven项目的基本目录。
4对于目标输入码头:运行,然后单击"调试"按钮。

一切都很好。您可以从Eclipse内部的控制台视图杀死它。所有断点都应照常工作。

要优雅地关闭Eclipse的应用程序,您必须执行以下操作。将以下配置添加到码头插件的POM中。这里重要的部分是停止键和停止端口。

<configuration>
    <tmpDir>target/not/necessary</tmpDir>
    <webAppConfig>
        <contextPath>/${project.name}</contextPath>
    </webAppConfig>
    <stopPort>9966</stopPort> 
    <stopKey>jetty-stop</stopKey>
</configuration>

接下来,为Maven添加另一个运行配置,但是这次将目标设定为Jetty:Stop。它将执行优雅的关闭。

为了使其更自动:可以将目标设置为Jetty:Stop Jetty:Start。这样,如果该过程不运行,则会有一个小警告,但启动过程将继续。否则其他过程将优雅地关闭,然后启动Serwer。

只需要一个命令,它可以通过一个快捷方式(运行最后构建)减少上下文切换。

orararound 1

  1. 从命令提示符,CD到您的WebApp项目(例如,主要pom.xml)。
  2. mvn jetty:run跑步码头
  3. 用Ctrl C杀死从那里起作用!(至少使用Windows CMD)

解决方案2

  1. 安装VisualVM
  2. 在新的VisualVM上安装杀死应用程序插件
  3. 右键单击VisualVM列表中的Jetty应用程序,并"杀死应用程序"

最新更新