2017-05-31 346 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> 
相关问题