При развертывании веб-приложение с помощью DeploymentManager
, эта ошибка возникаетJetty 9.3.9.v20160517 Поставщик WebSocketCdiInitializer не найден при включении аннотаций
2016-06-06 15:19:37,750 WARN [org.eclipse.jetty.deploy.DeploymentManager] (WrapperSimpleAppMain) Unable to reach node goal: started (DeploymentManager.java:506)
java.util.ServiceConfigurationError: javax.servlet.ServletContainerInitializer: Provider org.eclipse.jetty.cdi.websocket.WebSocketCdiInitializer not found
at java.util.ServiceLoader.fail(ServiceLoader.java:239)
at java.util.ServiceLoader.access$300(ServiceLoader.java:185)
at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:372)
at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
at org.eclipse.jetty.annotations.AnnotationConfiguration.getNonExcludedInitializers(AnnotationConfiguration.java:864)
at org.eclipse.jetty.annotations.AnnotationConfiguration.configure(AnnotationConfiguration.java:444)
at org.eclipse.jetty.webapp.WebAppContext.configure(WebAppContext.java:494)
at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1361)
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:772)
at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:262)
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:520)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
Это происходит при включении аннотаций поддерживают использование:
org.eclipse.jetty.webapp.Configuration.ClassList classlist = org.eclipse.jetty.webapp.Configuration.ClassList.setServerDefault(server);
classlist.addBefore(
"org.eclipse.jetty.webapp.JettyWebXmlConfiguration",
"org.eclipse.jetty.annotations.AnnotationConfiguration"
);
classlist.addAfter(
"org.eclipse.jetty.webapp.FragmentConfiguration",
"org.eclipse.jetty.plus.webapp.PlusConfiguration"
);
Ящик cdi-websocket-9.3.9.v20160517.jar
находится в пути класса
Этот issue предлагает отключить cdi
Модуль Jetty, но он не говорит, как это сделать со встроенным Jetty.
Как исправить это?
EDIT
Мы понимаем, что эта проблема может быть вызвана (комплексной) средой приложение работает в.
Поэтому я особенно заинтересован в понимании , что причины корневых что может привести это исключение будет брошено
ЗАКЛЮЧЕНИЕ
TD; LR: Jetty-9.3.9 встроенный! = Jetty-9.3.9 standalone
С Jetty 9.2.14 мы начали программировать программу (как и Jetty embedded), но используя банки неупакованной версии автономный причал.
У нас была эта настройка работоспособности с Jetty 7 (или, может быть, даже 6), но при переходе на Jetty 9.3.9 все началось.
Примечание: мы используем Джерси, сервлеты и очень немногие JSP. Нет веб-сайтов. Мы обновляем протокол HTTP/2.
На самом деле, лучший способ сказать, что 'jetty-cdi- *' специально разработан для автономного 'jetty-distribution' и его модульной системы , что слишком сложно (и бессмысленно) использовать, когда вы находитесь в 'embedded-jetty'. Более простое решение - просто использовать 'cdi-weld' напрямую. –