web-dev-qa-db-ja.com

Jettyアノテーションタイムアウトの理由

Maven jettyプラグインを使用してWebアプリケーションを実行するつもりです。しかし、起動時にしばらくすると、エラーが発生します。

[INFO] Web defaults = org/Eclipse/jetty/webapp/webdefault.xml
[INFO] Web overrides =  none
2014-08-10 17:39:45.840:INFO:oejs.Server:main: jetty-9.2.2.v20140723
2014-08-10 17:40:54.961:WARN:oejw.WebAppContext:main: Failed startup of context o.e.j.m.p.JettyWebAppContext@1e2c8{/asd,file:/C:/dev/project/hope/target/asd-1.0/,STARTING}{C:\dev\project\hope\target\asd-1.0.war}
Java.lang.Exception: Timeout scanning annotations
    at org.Eclipse.jetty.annotations.AnnotationConfiguration.scanForAnnotations(AnnotationConfiguration.Java:570)
    at org.Eclipse.jetty.annotations.AnnotationConfiguration.configure(AnnotationConfiguration.Java:440)
    at org.Eclipse.jetty.webapp.WebAppContext.configure(WebAppContext.Java:471)
    at org.Eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.Java:1329)
    at org.Eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.Java:741)
    at org.Eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.Java:497)
    at org.Eclipse.jetty.maven.plugin.JettyWebAppContext.doStart(JettyWebAppContext.Java:365)
    at org.Eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.Java:68)
    at org.Eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.Java:132)
    at org.Eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.Java:114)
    at org.Eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.Java:61)

アノテーション付きのSpring MVCを使用していますが、問題があると思います。

Eclipse jettyプラグインで実行しようとすると、正常に起動しますが、mavenプラグインではエラーが発生します。

何か案は?

23
Neron

同じエラーが発生しました。修正するには、開始スクリプト(start.ini)に以下を追加する必要があります。

-Dorg.Eclipse.jetty.annotations.maxWait=120

120は、より高い値が必要な場合に備えて2分間のアノテーションスキャン用です。適切な値に設定するだけです。

42
discolojr

依存するすべてのjarファイルをスキャンしても意味がありません。特定のjarファイルのみに一致するようにスキャンパターンをより制限することができます。

<plugin>
  <groupId>org.Eclipse.jetty</groupId>
  <artifactId>jetty-maven-plugin</artifactId>
  <version>9.2.8.v20150217</version>
  <configuration>
    <webAppConfig>
      <contextPath>/</contextPath>
      <webInfIncludeJarPattern>.*/foo-[^/]*\.jar$|.*/classes/.*</webInfIncludeJarPattern>
    </webAppConfig>
  </configuration>
</plugin>

詳細については、webInfIncludeJarPattern docを参照してください: http://www.Eclipse.org/jetty/documentation/9.4.x/jetty-maven-plugin.html#configuring-your-webapp

5
Hover Ruan

(私の意見では)もう1つの便利な方法は、次のようにjetty.xmlを使用してこのプロパティを設定することです。

<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.Eclipse.org/jetty/configure.dtd">
<Configure>
    <Call name="setProperty" class="Java.lang.System">
        <Arg>org.Eclipse.jetty.annotations.maxWait</Arg>
        <Arg>120</Arg>
    </Call>
</Configure>

このようにして、コマンドライン引数を省略できます

5
martyglaubitz

最も簡単な方法は、pom.xmlにシステムプロパティを追加することです

https://www.Eclipse.org/jetty/documentation/9.4.x/jetty-maven-plugin.html#setting-system-properties

2
Tom