Beim Ausführen meiner Jersey-API in Tomcat 8.5.11 wird die folgende Fehlermeldung angezeigt, die dazu führt, dass meine API gestoppt wird:
HTTP-Status 500 - Servlet.init () für Servlet Jersey REST Service hat eine Ausnahme ausgelöst
Geben Sie Ausnahmebericht ein
Nachricht Servlet.init () für Servlet Jersey REST Service hat eine Ausnahme ausgelöst
Beschreibung Der Server hat einen internen Fehler festgestellt, der die Erfüllung dieser Anforderung verhindert hat.
Ausnahme
javax.servlet.ServletException: Servlet.init () für Servlet Jersey REST Service hat die Ausnahme org.apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.java:474) org.apache.catalina.valves.ErrorReportValve.invoke (Error. java: 79) org.apache.catalina.valves.AbstractAccessLogValve.invoke (AbstractAccessLogValve.java:624) org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:349) org.apache.coyote.http11.Htt. service (Http11Processor.java:783) org.apache.coyote.AbstractProcessorLight.process (AbstractProcessorLight.java:66) org.apache.coyote.AbstractProtocol $ ConnectionHandler.process (AbstractProtocol.java:798) org.apache.tomcat. net.NioEndpoint $ SocketProcessor.doRun (NioEndpoint.java:1434) org.apache.tomcat.util.net.SocketProcessorBase.Führen Sie (SocketProcessorBase.java:49) aus. java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142) java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:6t) org.ut. threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) java.lang.Thread.run (Thread.java:745)
Ursache
java.lang.IllegalStateException: InjectionManagerFactory nicht gefunden. org.glassfish.jersey.internal.inject.Injections.lookupInjectionManagerFactory (Injections.java:97) org.glassfish.jersey.internal.inject.Injections.createInjectionManager (Injections.java:89) org.glassfish.jersey.server.ApplicationHandler. (ApplicationHandler.java:282) org.glassfish.jersey.servlet.WebComponent. (WebComponent.java:335) org.glassfish.jersey.servlet.ServletContainer.init (ServletContainer.java:178) org.glassfish.jersey.servlet. ServletContainer.init (ServletContainer.java:370) javax.servlet.GenericServlet.init (GenericServlet.java:158) org.apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.java:474) org.apache.catalina. ErrorReportValve.invoke (ErrorReportValve.java:79) org.apache.catalina.valves.
Die Anwendung wird mit den folgenden Abhängigkeiten mit gradle erstellt:
dependencies {
compile (
// REST
"org.glassfish.jersey.containers:jersey-container-servlet:2.+",
"javax.servlet:javax.servlet-api:4.+",
// REST Token
"org.bitbucket.b_c:jose4j:0.+",
// MongoDB
"org.hibernate.ogm:hibernate-ogm-bom:5.+",
"org.hibernate.ogm:hibernate-ogm-infinispan:5.+",
"org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.+",
"org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:1.+",
"org.jboss.narayana.jta:narayana-jta:5.+",
"org.jboss:jboss-transaction-spi:7.+",
"log4j:log4j:1.+",
"org.hibernate.ogm:hibernate-ogm-mongodb:5.+",
"org.bouncycastle:bcprov-jdk15on:1.+"
) }
Dieser Download jersey-common-2.26-b04.jar
enthält die fehlende Klasse unter /org/glassfish/jersey/internal/inject/InjectionManagerFactory
. Die JAR-Datei wird im Tomcat-Ordner unter bereitgestelltWEB-INF/lib
Was kann hier falsch sein? Das Gradle-Skript hat in den letzten Monaten mit derselben Tomcat-Version funktioniert.