aktiviert wird, wenn ein Webapp Entfalten des DeploymentManager
verwendet wird, wird dieser FehlerJetty 9.3.9.v20160517 Provider WebSocketCdiInitializer nicht gefunden, wenn Anmerkungen
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)
Dies geschieht bei der Aktivierung Anmerkungen unterstützen mit:
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"
);
Der Behälter cdi-websocket-9.3.9.v20160517.jar
ist im Klassenpfad
Dieser issue schlägt vor, denzu deaktivierenJetty-Modul, aber es sagt nicht, wie man es mit einem eingebetteten Jetty macht.
Wie behebe ich das?
EDIT
Wir wissen, dass dieses Problem kann durch die (komplexe) Umwelt verursacht wird die Anwendung in läuft.
Deshalb bin ich besonders daran interessiert, Verständnis welche die Wurzel Gründe das könnte diese Ausnahme dazu führen
FAZIT
geworfen werdenTD; LR: Jetty-9.3.9 eingebettet! = Jetty-9.3.9 autonom
Mit Jetty 9.2.14 starteten wir Jetty programmatisch (genau wie ein Jetty eingebettet) aber die Jars der unverpackten Version von ein eigenständiger Jetty.
Wir hatten diese Einrichtung funktioniert gut seit Jetty 7 (oder vielleicht sogar 6), aber die Dinge begannen zu brechen beim Upgrade auf Jetty 9.3.9.
Hinweis: Wir verwenden Jersey, Servlets und sehr wenige JSPs. Keine Websockets. Wir aktualisieren, um HTTP/2 zu testen.
Eigentlich ist die Art und Weise besser, es zu sagen ist, dass 'Anlegestelle-CDI- *' speziell für die Standalone-'Anlegestelle distribution' ausgebildet ist und sein Modulsystem . Das ist zu kompliziert (und sinnlos) zu verwenden, wenn Sie in Embedded-Jetty sind. Die einfachere Lösung besteht darin, 'cdi-weld' direkt zu verwenden. –