我只是想獲得一個RESTEasy示例工作,它看起來像我有一些麻煩設置我需要的環境。RESTEasy,錯誤503和servlet找不到
這是我使用的是簡單的例子:http://examples.javacodegeeks.com/enterprise-java/rest/resteasy/resteasy-hello-world-example/
相反的運行Tomcat的服務器,我想談談它自帶的Eclipse中的本地J2EE預覽服務器上的例子(?)。
控制檯告訴我:
2014-08-29 09:01:12.956:INFO:oejs.Server:jetty-8.1.14.v20131031 2014-08-29 09:01:13.141:WARN:oejw.WebAppContext:Failed startup of context o.e.j.w.WebAppContext{/JAXRS-RESTEasy,file:/home/myuser/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/JAXRS-RESTEasy/},/home/myuser/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/JAXRS-RESTEasy java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.jetty.webapp.IterativeDescriptorProcessor.visit(IterativeDescriptorProcessor.java:80) at org.eclipse.jetty.webapp.IterativeDescriptorProcessor.process(IterativeDescriptorProcessor.java:67) at org.eclipse.jetty.webapp.MetaData.resolve(MetaData.java:332) at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1219) at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:717) at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:454) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95) at org.eclipse.jetty.server.Server.doStart(Server.java:282) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.wst.server.preview.internal.PreviewStarter.run(PreviewStarter.java:72) at org.eclipse.wst.server.preview.internal.PreviewStarter.main(PreviewStarter.java:29) Caused by: java.lang.IllegalStateException: No such servlet: resteasy-servlet at org.eclipse.jetty.servlet.ServletHandler.updateMappings(ServletHandler.java:1322) at org.eclipse.jetty.servlet.ServletHandler.setServletMappings(ServletHandler.java:1416) at org.eclipse.jetty.servlet.ServletHandler.addServletMapping(ServletHandler.java:900) at org.eclipse.jetty.webapp.StandardDescriptorProcessor.addServletMapping(StandardDescriptorProcessor.java:1196) at org.eclipse.jetty.webapp.StandardDescriptorProcessor.visitServletMapping(StandardDescriptorProcessor.java:639) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.jetty.webapp.IterativeDescriptorProcessor.visit(IterativeDescriptorProcessor.java:80) at org.eclipse.jetty.webapp.IterativeDescriptorProcessor.process(IterativeDescriptorProcessor.java:67) at org.eclipse.jetty.webapp.MetaData.resolve(MetaData.java:332) at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1219) at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:717) at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:454) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95) at org.eclipse.jetty.server.Server.doStart(Server.java:282) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.wst.server.preview.internal.PreviewStarter.run(PreviewStarter.java:72) at org.eclipse.wst.server.preview.internal.PreviewStarter.main(PreviewStarter.java:29) 2014-08-29 09:01:13.167:INFO:oejs.AbstractConnector:Started [email protected]:8084
我的web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>JAXRS-RESTEasy</display-name>
<servlet-mapping>
<servlet-name>resteasy-servlet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<!-- Auto scan REST service -->
<context-param>
<param-name>resteasy.scan</param-name>
<param-value>true</param-value>
</context-param>
<!-- this should be the same URL pattern as the servlet-mapping property -->
<context-param>
<param-name>resteasy.servlet.mapping.prefix</param-name>
<param-value>/rest</param-value>
</context-param>
<listener>
<listener-class>
org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
</listener-class>
</listener>
<servlet>
<servlet-name>resteasy-servlet</servlet-name>
<servlet-class>
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
</servlet-class>
</servlet>
</web-app>
而且我的pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.javacodegeeks.enterprise.rest.resteasy</groupId>
<artifactId>JAXRS-RESTEasy</artifactId>
<version>0.0.1-SNAPSHOT</version>
<repositories>
<repository>
<id>JBoss repository</id>
<url>https://repository.jboss.org/nexus/content/groups/public-jboss/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>3.0.4.Final</version>
</dependency>
</dependencies>
</project>
代碼本身,但我不認爲出現問題:
package com.javacodegeeks.enterprise.rest.resteasy;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Response;
@Path("/RESTEasyHelloWorld")
public class RESTEasyHelloWorldService {
@GET
@Path("/{pathParameter}")
public Response responseMsg(@PathParam("pathParameter") String pathParameter,
@DefaultValue("Nothing to say") @QueryParam("queryParamter") String queryParamter) {
String response = "Hello from: " + pathParameter + " : " + queryParamter;
return Response.status(200).entity(response).build();
}
}
如果我嘗試調用它在我的瀏覽器我只是得到:
HTTP ERROR: 503
Problem accessing /JAXRS-RESTEasy/rest/RESTEasyHelloWorldService/. Reason:
Service Unavailable
我已經試過各種網址,因爲我真的不知道還該URL的格式應該如何。
僅僅是因爲缺少servlet嗎?爲什麼缺少,不應該Maven將它作爲resteasy-jaxrs-3.0.4.Final依賴項的一部分下載它?
希望有人能給我一個提示,我真的不知道從哪裏開始挖掘。
編輯: 控制檯我試過後@Maleencs的pom.xml和web.xml:
Starting preview server on port 8084
Modules: JAXRS-RESTEasy (/JAXRS-RESTEasy)
2014-08-29 12:22:11.378:INFO:oejs.Server:jetty-8.1.14.v20131031 2014-08-29 12:22:11.656:WARN:oejw.StandardDescriptorProcessor:Could not instantiate listener org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap java.lang.ClassNotFoundException: org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:424) at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:377) at org.eclipse.jetty.server.handler.ContextHandler.loadClass(ContextHandler.java:1528) at org.eclipse.jetty.webapp.StandardDescriptorProcessor.visitListener(StandardDescriptorProcessor.java:1839) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.jetty.webapp.IterativeDescriptorProcessor.visit(IterativeDescriptorProcessor.java:80) at org.eclipse.jetty.webapp.IterativeDescriptorProcessor.process(IterativeDescriptorProcessor.java:67) at org.eclipse.jetty.webapp.MetaData.resolve(MetaData.java:332) at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1219) at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:717) at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:454) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95) at org.eclipse.jetty.server.Server.doStart(Server.java:282) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.wst.server.preview.internal.PreviewStarter.run(PreviewStarter.java:72) at org.eclipse.wst.server.preview.internal.PreviewStarter.main(PreviewStarter.java:29) 2014-08-29 12:22:11.744:WARN:oejs.Holder: java.lang.ClassNotFoundException: org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:424) at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:377) at org.eclipse.jetty.util.Loader.loadClass(Loader.java:100) at org.eclipse.jetty.util.Loader.loadClass(Loader.java:79) at org.eclipse.jetty.servlet.Holder.doStart(Holder.java:107) at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:298) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:791) at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265) at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1221) at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:717) at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:454) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95) at org.eclipse.jetty.server.Server.doStart(Server.java:282) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.wst.server.preview.internal.PreviewStarter.run(PreviewStarter.java:72) at org.eclipse.wst.server.preview.internal.PreviewStarter.main(PreviewStarter.java:29) 2014-08-29 12:22:11.746:WARN:/JAXRS-RESTEasy:unavailable javax.servlet.UnavailableException: org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher at org.eclipse.jetty.servlet.Holder.doStart(Holder.java:114) at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:298) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:791) at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265) at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1221) at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:717) at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:454) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95) at org.eclipse.jetty.server.Server.doStart(Server.java:282) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.wst.server.preview.internal.PreviewStarter.run(PreviewStarter.java:72) at org.eclipse.wst.server.preview.internal.PreviewStarter.main(PreviewStarter.java:29) 2014-08-29 12:22:11.747:WARN:oejuc.AbstractLifeCycle:FAILED resteasy-servlet: javax.servlet.UnavailableException: org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher javax.servlet.UnavailableException: org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher at org.eclipse.jetty.servlet.Holder.doStart(Holder.java:114) at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:298) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:791) at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265) at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1221) at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:717) at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:454) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95) at org.eclipse.jetty.server.Server.doStart(Server.java:282) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.wst.server.preview.internal.PreviewStarter.run(PreviewStarter.java:72) at org.eclipse.wst.server.preview.internal.PreviewStarter.main(PreviewStarter.java:29) 2014-08-29 12:22:11.748:WARN:oejw.WebAppContext:Failed startup of context o.e.j.w.WebAppContext{/JAXRS-RESTEasy,file:/home/myuser/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/JAXRS-RESTEasy/},/home/myuser/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/JAXRS-RESTEasy javax.servlet.UnavailableException: org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher at org.eclipse.jetty.servlet.Holder.doStart(Holder.java:114) at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:298) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:791) at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265) at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1221) at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:717) at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:454) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95) at org.eclipse.jetty.server.Server.doStart(Server.java:282) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.wst.server.preview.internal.PreviewStarter.run(PreviewStarter.java:72) at org.eclipse.wst.server.preview.internal.PreviewStarter.main(PreviewStarter.java:29) 2014-08-29 12:22:11.780:INFO:oejs.AbstractConnector:Started [email protected]:8084
你可以嘗試沒有上下文參數resteasy.servlet.mapping.prefix? – asohun 2014-08-29 07:51:35
@asohun:同樣的結果。 – Feroc 2014-08-29 08:17:22
@Feroc - 仍然有你的web.xml中的監聽器?如果這樣刪除它。否則,嘗試添加http://mvnrepository.com/artifact/javax.servlet/javax.servlet-api/3.1.0給你。 – 2014-08-29 11:47:23