Время ожидания тайм-аута Jetty
Я привязываю к запуску своего веб-приложения с помощью плагина maven. Но через некоторое время при запуске он дает ошибку:
[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 [email protected]{/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 он выдает ошибку.
Любые идеи?
Ответы
Ответ 1
У меня такая же ошибка, и для ее исправления добавьте в начало script (start.ini) следующее:
-Dorg.eclipse.jetty.annotations.maxWait=120
120 - это две минуты сканирования аннотаций в случае, если вам нужно более высокое значение, просто установите его в подсказку.
Ответ 2
Еще один (на мой взгляд) удобный способ - установить это свойство с помощью 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>
Таким образом, вы можете опустить командную строку args
Ответ 3
Бесполезно сканировать все зависимые баночки, вы можете сделать шаблон сканирования более ограничительным, чтобы соответствовать только определенным банкам:
<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
Ответ 4
Самый простой способ - добавить системное свойство в pom.xml
https://www.eclipse.org/jetty/documentation/9.4.x/jetty-maven-plugin.html#setting-system-properties
Ответ 5
Свойство (-Dorg.eclipse.jetty.annotations.maxWait = 120) можно добавить в start.ini, чтобы он работал для всех веб-приложений в базе вашего приложения.