当前位置: 首页 > 知识库问答 >
问题:

为什么jetty服务器在服务器启动后挂起并且不运行集成测试?

严宇
2023-03-14

我正在使用maven-jetty-plugin和maven-failsafe-plugin运行集成测试。以下是我的配置:

   <plugin>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>2.7.1</version>
            <executions>
              <execution>
                <id>integration-test</id>
                <goals>
                  <goal>integration-test</goal>
                </goals>
              </execution>
              <execution>
                <id>verify</id>
                <goals>
                  <goal>verify</goal>
                </goals>
              </execution>
             </executions>
        </plugin>

        <plugin>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>maven-jetty-plugin</artifactId>
            <version>6.1.26</version>
            <configuration>

                  <connectors>
                    <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
                      <port>8080</port>
                      <maxIdleTime>3600000</maxIdleTime>
                    </connector>
                  </connectors>

                <contextPath>/</contextPath>
                <scanIntervalSeconds>3</scanIntervalSeconds>
                <scanTargetPatterns>
                    <scanTargetPattern>
                        <directory>src/main/webapp/WEB-INF</directory>
                        <excludes>
                            <exclude>**/*.jsp</exclude>
                            <exclude>**/*.html</exclude>
                        </excludes>
                        <includes>
                            <include>**/*.page</include>
                            <include>**/*.properties</include>
                            <include>**/*.xml</include>
                        </includes>
                    </scanTargetPattern>
                </scanTargetPatterns>
            </configuration>
            <executions>
                    <execution>
                        <id>start-jetty</id>
                        <phase>pre-integration-test</phase>
                        <goals>
                          <goal>run-war</goal>
                        </goals>
                        <configuration>
                          <scanIntervalSeconds>0</scanIntervalSeconds>
                          <daemon>true</daemon>
                        </configuration>
                    </execution>
                    <execution>
                        <id>stop-jetty</id>
                        <phase>post-integration-test</phase>
                        <goals>
                          <goal>stop</goal>
                        </goals>
                    </execution>
          </executions>
        </plugin>

当我运行mvn clean install时,jetty服务器启动,之后什么也没有发生(它会卡住)。我的日志中的最后一行是:[INFO]启动了Jetty服务器。当我按下control-c时,它会显示如下内容:

2013-04-25 15:24:16.315:INFO::Shutdown hook executing
2013-04-25 15:24:16.317:INFO::Stopped SelectChannelConnector@0.0.0.0:8080
2013-04-25 15:24:16.821:INFO:/ca-app:Shutting down log4j
2013-04-25 15:24:16.821:INFO:/ca-app:Closing Spring root WebApplicationContext
2013-04-25 15:24:22.108:INFO::Shutdown hook complete[INFO] 
Jetty server exiting.
[INFO] 
[INFO] --- maven-failsafe-plugin:2.7.1:integration-test (default) @ my-app ---
[INFO] Failsafe report directory: my-app/target/failsafe-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running TestSuite
There are no tests to run.

Results :

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

[WARNING] File encoding has not been set, using platform encoding MacRoman, i.e. build is platform dependent!
[INFO] 
[INFO] --- maven-jetty-plugin:6.1.26:stop (stop-jetty) @ my-app ---
[INFO] 
[INFO] --- maven-failsafe-plugin:2.7.1:verify (default) @ my-app ---
[INFO] Killing Jetty
[INFO] Failsafe report directory: my-app/target/failsafe-reports
[WARNING] File encoding has not been set, using platform encoding MacRoman, i.e. build is platform dependent!
[INFO] 
[INFO] --- maven-install-plugin:2.3.1:install (default-install) @ my-app ---
[INFO] Installing my-app/target/ca-app-0.1.5-SNAPSHOT.war to ~/.m2/....../my-app/0.1.5-SNAPSHOT/my-app-0.1.5-SNAPSHOT.war
[INFO] Installing my-app/pom.xml to ~/.m2/....../my-app/0.1.5-SNAPSHOT/my-app-0.1.5-SNAPSHOT.war
[INFO] 
[INFO] --- maven-dependency-plugin:2.1:sources (install) @ my-app ---

为什么会卡住?当我按下control-c时,它为什么执行其余的步骤?我该怎么修好它?

共有1个答案

长孙深
2023-03-14

尝试使用start而不是run-war。

从org\eclipse\jetty\jetty-Maven-plugin\9.3.0.m2\jetty-Maven-plugin-9.3.0.m2.jar上的javadoc!\org\eclipse\jetty\maven\plugin\abstractJettyMojo.nonblocking

确定服务器启动时是否阻塞。默认行为(false)将导致服务器在继续处理web请求时暂停其他进程。这在启动服务器以交互方式工作时非常有用。这是Jetty:Run,Jetty:Run-War,Jetty:Run-War-爆炸目标的行为。如果为true,服务器将不会阻止后续代码的执行。这是jetty的行为:start和jetty的默认行为:deploy目标。

 类似资料:
  • 但问题是插件找不到任何测试,因为它们在其他模块中。 你能告诉我如何在第一个模块中设置故障安全查找测试吗?或者其他解决方案例如从父级运行?

  • 问题内容: 我在新的数字海洋ubuntu 14.04服务器上部署了selenium独立服务器。它无法正常启动。它给出的日志是 我猜在日志中缺少2行。 有人知道为什么会发生吗? 问题答案: 当硒试图产生随机种子时会发生这种情况,但是内核缺乏熵。 解决方案是安装类似的添加熵的软件。参见https://www.digitalocean.com/community/tutorials/how- to-se

  • 我有能力安装jetty,我只是下载了jetty7 zip并提取了服务器。 我需要在3台linux机器上设置这个。在一台机器中,服务器启动得很好,没有问题。 但是在另外两个中,当服务器启动时,它会显示以下错误。

  • 我希望payara服务器作为服务运行。我以sudo的身份登录asadmin,并使用create-service命令。给出了以下输出。 这将在 /etc/init.d/ 文件夹中创建payara_production脚本,但一旦重新启动计算机,就不会执行此脚本。我必须手动启动payara才能运行它。 “您已经创建了服务,但是您需要自己启动它”是什么意思,我在之前使用的GlassFish版本中没有类似

  • 我正在实现客户机/服务器文件发送和接收。 正在发送的部分C代码: 部分Java代码接收: 使用readUTF()函数后,服务器挂起或处于无限循环中,不再继续。我已经使用readLine()尝试了BufferedReader。有一个错误是“没有为BufferedReader(InputStream)找到合适的构造函数&readLine()给出警告。除了BufferedReader之外,还有其他替代方

  • 我正在构建一个。NET核心web应用程序,在服务器端我为计划任务和长期运行任务添加了hangfire。在我添加的startup.cs文件中: 在configure函数中,我添加了以下内容: 是否有一种方法可以确保只有一个服务器在运行?或者,如果我可以在停止应用程序(IIS)时关闭服务器,并在运行应用程序时再次启动它