2017-05-31 342 views
2

MyResourceHTTP狀態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> 

錯誤

HTTP狀態500 - Servlet.init()進行的servlet新澤西Web應用程序 拋出異常

類型異常報告

消息Servlet.init( )爲servlet Jersey Web Application拋出 異常

說明服務器遇到一個內部錯誤,阻止其執行此請求 。

例外javax.servlet.ServletException:Servlet.init()進行的servlet 新澤西Web應用程序拋出異常 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(Unknown Source)

根本原因java.lang.IllegalStateException:未找到InjectionManagerFactory 。 org.glassfish.jersey.internal.inject.Injections.lookupInjectionManagerFactory(Injections.java:97) org.glassfish.jersey.internal.inject.Injections.createInjectionManager(Injections.java:89) org.glassfish.jersey.server 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(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(未知源) org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61) java.lang.Thread.run(來源不明)

注根源的完整堆棧跟蹤可用在Apache Tomcat/8.0.43日誌中。

的Apache Tomcat/8.0.43

+0

您能否以問題開始? –

+0

嘗試擴展'javax.ws.rs.core.Application'而不是在web.xml中聲明很多東西。爲了使它工作,只需擴展該類,並在擴展它的類上提供@ApplicationPath(「/」)註釋,不知道它是否做出任何更改(可能不是),而是將@Path(「/ myresource」)添加爲根類路徑到您的班級。並嘗試僅從瀏覽器調用您的服務,URL將會像'http:// localhost:8080/my-app/myresource'一樣不適用 – john

+0

請解釋除了顯示代碼之外還會發生什麼。這將使分析問題變得更加容易。 –

回答

18

添加如下依賴:

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

與您球衣的其他部分具有相同的版本號。 –

10

我有同樣的根源:java.lang.IllegalStateException:InjectionManagerFactory找不到

pom.xml中的一些變化終於發揮作用了。請嘗試以下方法:

<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> 
相關問題