![](/img/trans.png)
[英]javax.ws.rs.NotFoundException: Could not find resource for full path: with RESTEasy, Eclipse Luna and Tomcat 7
[英]javax.ws.rs.NotFoundException: RESTEASY003210: Could not find resource for full path: using RestEASY, Intellij IDEA 16.1, Tomcat 8.0.33
有人提出了很多问题,但是我尝试了所有建议的变体,谷歌搜索了我的问题,检查了RestEASY规范。 什么都没有帮助我。 我正在创建一个非常简单的“Hello World”应用程序。 当我写的路由到我的REST服务的URL时,我收到以下错误和浏览器中的空白页面。
这是堆栈跟踪:
15-May-2016 14:41:58.977 ERROR [http-nio-8080-exec-5] org.jboss.resteasy.core.ExceptionHandler.handleWebApplicationException RESTEASY002010: Failed to execute
javax.ws.rs.NotFoundException: RESTEASY003210: Could not find resource for full path: http://localhost:8080/api/v1/status
at org.jboss.resteasy.core.registry.ClassNode.match(ClassNode.java:75)
at org.jboss.resteasy.core.registry.RootClassNode.match(RootClassNode.java:48)
at org.jboss.resteasy.core.ResourceMethodRegistry.getResourceInvoker(ResourceMethodRegistry.java:445)
at org.jboss.resteasy.core.SynchronousDispatcher.getInvoker(SynchronousDispatcher.java:257)
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:194)
at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:221)
at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56)
at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1502)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1458)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
这是我的pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<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.taras.resty</groupId>
<artifactId>Resty</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>LATEST</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>LATEST</version>
</dependency>
</dependencies>
</project>
这是我的web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>V1_Status</servlet-name>
<servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.taras.resty.status.V1_Status</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>V1_Status</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
</web-app>
这是我的类处理我的REST请求:
package com.taras.resty.status;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Application;
import javax.ws.rs.ApplicationPath;
@ApplicationPath("/v1/status")
public class V1_Status extends Application {
private static final String api_version= "00.01.00";
@GET
@Produces(MediaType.TEXT_HTML)
public String returnTitle(){
return "<p>Java Web Service</p>";
}
@Path("/version")
@GET
@Produces(MediaType.TEXT_HTML)
public String returnVersion(){
return "<p>Version + </p>" + api_version;
}
}
我使用的URL是: http:// localhost:8080 / api / v1 / status
先感谢您。
编辑 - 已解决对于将面临同样问题的人。 @tair帮我解决了我的错误。 试试他的版本(你可以在这里找到https://github.com/tsabirgaliev/hello-jaxrs )。 我们还没有找到原因,它已经以某种方式消失了(魔术)。 当然,更详细的信息请查看规范http://docs.jboss.org/resteasy/docs/3.0.16.Final/userguide/html_single/index.html#d4e113
由于您的web.xml建议您使用与Servlets 3.1兼容的Tomcat,因此Resteasy的配置应该不同。 请参阅第3.5. Standalone Resteasy in Servlet 3.0 Containers
节3.5. Standalone Resteasy in Servlet 3.0 Containers
3.5. Standalone Resteasy in Servlet 3.0 Containers
官方Resteasy文档的3.5. Standalone Resteasy in Servlet 3.0 Containers
[1]。
如果您坚持使用旧样式配置,则应将JAX-RS应用程序指定为HttpServletDispatcher
init-param
:
<servlet>
<servlet-name>Resteasy</servlet-name>
<servlet-class>
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.taras.resty.Application</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>V1_Status</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
<context-param>
<param-name>resteasy.servlet.mapping.prefix</param-name>
<param-value>/api</param-value>
</context-param>
在任何一种情况下,您都必须javax.ws.rs.Application
。
更新:这里[2]是一个完整的应用示例。 使用Tomcat 8.0.33进行测试
[1] http://docs.jboss.org/resteasy/docs/3.0.16.Final/userguide/html_single/index.html#d4e113
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.