2017-05-31 3 views
2

MyResourceHTTP-Status 500 - Servlet.init()

@Path("myresource") 
public class MyResource { 

    /** 
    * Method handling HTTP GET requests. The returned object will be sent 
    * to the client as "text/plain" media type. 
    * 
    * @return String that will be returned as a text/plain response. 
    */ 
    @GET 
    @Produces(MediaType.TEXT_PLAIN) 
    public String getIt() { 
     return "Got it!"; 
    } 
} 

index.jsp

<html> 
<body> 
    <h2>Jersey RESTful Web Application!</h2> 
    <p><a href="webapi/myresource">Jersey resource</a> 
    <p>Visit <a href="http://jersey.java.net">Project Jersey website</a> 
    for more information on Jersey! 
</body> 
</html> 

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!-- This web.xml file is not required when using Servlet 3.0 container, 
    see implementation details http://jersey.java.net/nonav/documentation/latest/jax-rs.html --> 
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
    <servlet> 
     <servlet-name>Jersey Web Application</servlet-name> 
     <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
     <init-param> 
      <param-name>jersey.config.server.provider.packages</param-name> 
      <param-value>dev.webapp</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Jersey Web Application</servlet-name> 
     <url-pattern>/webapi/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

pom.xml

http://maven.apache.org/maven-v4_0_0.xsd ">

<modelVersion>4.0.0</modelVersion> 

<groupId>dev</groupId> 
<artifactId>webapp</artifactId> 
<packaging>war</packaging> 
<version>0.0.1-SNAPSHOT</version> 
<name>webapp</name> 

<build> 
    <finalName>webapp</finalName> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.5.1</version> 
      <inherited>true</inherited> 
      <configuration> 
       <source>1.7</source> 
       <target>1.7</target> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>org.glassfish.jersey</groupId> 
      <artifactId>jersey-bom</artifactId> 
      <version>${jersey.version}</version> 
      <type>pom</type> 
      <scope>import</scope> 
     </dependency> 
    </dependencies> 
</dependencyManagement> 

<dependencies> 
    <dependency> 
     <groupId>org.glassfish.jersey.containers</groupId> 
     <artifactId>jersey-container-servlet-core</artifactId> 
     <!-- use the following artifactId if you don't need servlet 2.x compatibility --> 
     <!-- artifactId>jersey-container-servlet</artifactId --> 
    </dependency> 
    <!-- uncomment this to get JSON support 
    <dependency> 
     <groupId>org.glassfish.jersey.media</groupId> 
     <artifactId>jersey-media-moxy</artifactId> 
    </dependency> 
    --> 
</dependencies> 
<properties> 
    <jersey.version>2.26-b04</jersey.version> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 

Fehler

HTTP-Status 500 - Servlet.init() für Servlet-Jersey Web Application warf Ausnahme

Typ Ausnahmebericht

Nachricht Servlet.init () für Servlet Jersey Web Application warf Ausnahme

Beschreibung Der Server hat einen internen Fehler festgestellt, der verhindert hat, dass diese Anforderung erfüllt.

Ausnahme javax.servlet.ServletException: Servlet.init() für Servlet Jersey Web Application warf Ausnahme org.apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.java:504) org.apache.catalina. valves.ErrorReportValve.invoke (ErrorReportValve.java:79) org.apache.catalina.valves.AbstractAccessLogValve.invoke (AbstractAccessLogValve.java:620) org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:502) org.apache.coyote.http11.AbstractHttp11Processor.process (AbstractHttp11Processor.java:1132) org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process (AbstractProtocol.java:684) org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun (NioEndpoint.java:1533) org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.run (NioEndpoint.java:1489) java.util .concurrent.ThreadPoolExecutor.runWorker (Unknown Source) java.util.concurrent.ThreadPoolExecutor $ Worker.run (Unknown Source) org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) java.lang.Thread.run (Unbekannte Quelle)

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:504) org.apache.catalina.valves.ErrorReportValve.invoke (FehlerberichtValve.java:79) org.apache.catalina.valves.AbstractAccessLogValve.invoke (AbstractAccessLogValve.java:620) org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java: 502) org.apache.coyote.http11.AbstractHttp11Processor.process (AbstractHttp11Processor.java:1132) org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process (AbstractProtocol.java:684) org.apache.tomcat.util.net .NioEndpoint $ SocketProcessor.doRun (NioEndpoint.java:1533) org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.run (NioEndpoint.java:1489) java.util.concurrent.ThreadPoolExecutor.runWorker (unbekannte Quelle) java.util.concurrent.ThreadPoolExecutor $ Worker.run (Unbekannte Quelle) org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) java.lang.Thread.run (Unknown Source)

Anmerkung Der vollständige Stack-Trace von der Ursache ist verfügbar in den Apache Tomcat/8.0.43 Protokolle.

Apache Tomcat/8.0.43

+0

Könnten Sie bitte mit Frage beginnen? –

+0

versuchen Sie, 'javax.ws.rs.core.Application' zu erweitern, anstatt viel in web.xml zu deklarieren. Damit es funktioniert, erweitern Sie einfach diese Klasse und geben Sie @ApplicationPath ("/") Annotation für die Klasse an, die sie erweitert. Sie wissen nicht, ob sie Änderungen vornehmen (wahrscheinlich nicht), sondern @Path ("/ myresource") als a hinzufügen Root-Pfad zu Ihrer Klasse. Und versuchen Sie, Ihren Dienst nur aus dem Browser aufzurufen, die URL wird wie "http: // localhost: 8080/my-app/myresource" sein. – john

+0

Bitte erklären Sie, was los ist, abgesehen von der Anzeige der Codes. Es wird es einfacher machen, Ihr Problem genau zu analysieren. –

Antwort

18

In Folgeabhängigkeit:

<dependency> 
     <groupId>org.glassfish.jersey.inject</groupId> 
     <artifactId>jersey-hk2</artifactId> 
    </dependency> 
+1

mit der gleichen Versionsnummer wie der Rest Ihrer Trikot Artefakte. –

10

Ich hatte die gleiche Ursache: java.lang.IllegalStateException: InjectionManagerFactory nicht gefunden.

Nach einigen Änderungen in pom.xml hat es endlich funktioniert. Versuchen Sie wie folgt:

<dependency> 
    <groupId>org.glassfish.jersey.containers</groupId> 
    <artifactId>jersey-container-servlet</artifactId> 
    <version>2.26-b06</version> 
</dependency> 
<dependency> 
    <groupId>org.glassfish.jersey.inject</groupId> 
    <artifactId>jersey-hk2</artifactId> 
    <version>2.26-b06</version> 
</dependency> 
Verwandte Themen