javax.ws.rs.NotFoundException:无法使用 RESTEasy 和 Wildfly 8.1.0.Final 找到完整路径的资源
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/27295720/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
javax.ws.rs.NotFoundException: Could not find resource for full path with RESTEasy and Wildfly 8.1.0.Final
提问by Bilbo Baggins
I am facing following problem. I have spent more than 3 days on this but cannot find a solution. Please guide me what I am doing wrong here. I am new to Resteasy with wildfly.
我面临以下问题。我已经花了超过 3 天的时间来解决这个问题,但找不到解决方案。请指导我在这里做错了什么。我是 Wildfly 的 Resteasy 新手。
Here is the stacktrace
这是堆栈跟踪
19:05:57,610 WARN [org.jboss.resteasy.core.ExceptionHandler] (default task-14) failed to execute: javax.ws.rs.NotFoundException: Could not find resource for full path: http://localhost:8080/admin-ws/services/user/getUser
at org.jboss.resteasy.core.registry.ClassNode.match(ClassNode.java:73) [resteasy-jaxrs-3.0.8.Final.jar:]
at org.jboss.resteasy.core.registry.RootClassNode.match(RootClassNode.java:48) [resteasy-jaxrs-3.0.8.Final.jar:]
at org.jboss.resteasy.core.ResourceMethodRegistry.getResourceInvoker(ResourceMethodRegistry.java:444) [resteasy-jaxrs-3.0.8.Final.jar:]
at org.jboss.resteasy.core.SynchronousDispatcher.getInvoker(SynchronousDispatcher.java:234) [resteasy-jaxrs-3.0.8.Final.jar:]
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:171) [resteasy-jaxrs-3.0.8.Final.jar:]
at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:220) [resteasy-jaxrs-3.0.8.Final.jar:]
at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56) [resteasy-jaxrs-3.0.8.Final.jar:]
at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51) [resteasy-jaxrs-3.0.8.Final.jar:]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [jboss-servlet-api_3.1_spec-1.0.0.Final.jar:1.0.0.Final]
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:61) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:113) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:56) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:45) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:61) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:70) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:240) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:227) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.servlet.handlers.ServletInitialHandler.access<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" 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">
</web-app>
0(ServletInitialHandler.java:73) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.servlet.handlers.ServletInitialHandler.handleRequest(ServletInitialHandler.java:146) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:177) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.server.HttpServerExchange.run(HttpServerExchange.java:727) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0_20]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_20]
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_20]
Here is my web.xml
这是我的 web.xml
package com.abc.admin.services.config;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
@ApplicationPath("/services")
public class WebConfig extends Application {
}
Here is the Application class.
这是应用程序类。
package com.abc.admin.service;
import java.io.Serializable;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import com.abc.commons.ws.entity.UserWsPojo;
@Path("/user")
public class UserResource implements Serializable {
private static final long serialVersionUID = 6766329501327292893L;
@GET
@Path("/services/user/getUser")
@Produces(MediaType.APPLICATION_JSON)
public UserWsPojo getUser(String id) {
UserWsPojo uwp = new UserWsPojo();
uwp.setName("Aayush");
uwp.setSurname("Devmurari");
return uwp;
}
}
Here is the web service class.
这是 Web 服务类。
@Path("/user")
public class UserResource implements Serializable {
private static final long serialVersionUID = 6766329501327292893L;
@GET
@Path("/getUser")
@Produces(MediaType.APPLICATION_JSON)
public UserWsPojo getUser() {
UserWsPojo uwp = new UserWsPojo();
uwp.setName("Aayush");
uwp.setSurname("Devmurari");
return uwp;
}
}
Now in the above mentioned class I also tried to change the path of @Path with /getUser and also tried full path i.e. @Path("/services/user/getUser") none of these are working everytime I get the same error.
现在在上面提到的类中,我还尝试使用 /getUser 更改 @Path 的路径,并且还尝试了完整路径,即 @Path("/services/user/getUser") 每次我遇到相同的错误时,这些都不起作用。
If you need to see anything else please let me know. I will post it here.
如果您需要查看其他内容,请告诉我。我会把它贴在这里。
Thanks for reading and helping.
感谢您的阅读和帮助。
P.S I have tried reading other questions on SO, documentation on RestEasy none of this helped me much. However I corrected my code while looking for the solution.
PS 我试过阅读关于 SO 的其他问题,关于 RestEasy 的文档,这些都没有帮助我。但是,我在寻找解决方案时更正了我的代码。
Based on the answers I did this too
根据答案我也这样做了
22:15:58,489 WARN [org.jboss.resteasy.core.ExceptionHandler] (default task-5) failed to execute: javax.ws.rs.NotFoundException: Could not find resource for full path: http://localhost:8080/admin-ws/services/user/getUsers
at org.jboss.resteasy.core.registry.ClassNode.match(ClassNode.java:73) [resteasy-jaxrs-3.0.8.Final.jar:]
at org.jboss.resteasy.core.registry.RootClassNode.match(RootClassNode.java:48) [resteasy-jaxrs-3.0.8.Final.jar:]
at org.jboss.resteasy.core.ResourceMethodRegistry.getResourceInvoker(ResourceMethodRegistry.java:444) [resteasy-jaxrs-3.0.8.Final.jar:]
at org.jboss.resteasy.core.SynchronousDispatcher.getInvoker(SynchronousDispatcher.java:234) [resteasy-jaxrs-3.0.8.Final.jar:]
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:171) [resteasy-jaxrs-3.0.8.Final.jar:]
at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:220) [resteasy-jaxrs-3.0.8.Final.jar:]
at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56) [resteasy-jaxrs-3.0.8.Final.jar:]
at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51) [resteasy-jaxrs-3.0.8.Final.jar:]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [jboss-servlet-api_3.1_spec-1.0.0.Final.jar:1.0.0.Final]
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:61) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:113) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:56) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:45) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:61) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:70) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:240) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:227) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.servlet.handlers.ServletInitialHandler.access@GET
@Path("/getUser/{id}")
@Produces(MediaType.APPLICATION_JSON)
public UserWsPojo getUser(@PathParam("id") String id) {
// do things with stuff
}
0(ServletInitialHandler.java:73) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.servlet.handlers.ServletInitialHandler.handleRequest(ServletInitialHandler.java:146) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:177) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.server.HttpServerExchange.run(HttpServerExchange.java:727) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0_20]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_20]
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_20]
Other things are same as they are, still I am getting the same error.
其他事情与它们相同,但我仍然遇到相同的错误。
(1) http://localhost:8080/admin-ws (I assume `admin-ws` is the app name)
回答by Gimby
Its hard to say for sure, but one thing I see is that you are passing a parameter but not mapping any parameter in the URL. This would be more correct:
很难确定,但我看到的一件事是您正在传递一个参数,但没有在 URL 中映射任何参数。这会更正确:
(2) http://localhost:8080/admin-ws/services
And then the full URL would be /admin-ws/services/user/getUser/1 to get a user with ID 1.
然后完整的 URL 将是 /admin-ws/services/user/getUser/1 以获取 ID 为 1 的用户。
回答by Paul Samsotha
Base:
(3) http://localhost:8080/admin-ws/services/user
@ApplicationPath("/services")
== append/services
to Base(4) http://localhost:8080/admin-ws/services/user/services/user/getUser //This is the winner with your current set up
@Path("/user")
== append/user
to previoushttp://localhost:8080/admin-ws/services/user/getUser
@Path("/services/user/getUser")
== append/services/user/getUser
to previous(1) http://localhost:8080/admin-ws (I assume `admin-ws` is the app name)
What you are using:
(2) http://localhost:8080/admin-ws/services
What's different?
根据:
(3) http://localhost:8080/admin-ws/services/user
@ApplicationPath("/services")
== 附加/services
到Base(4) http://localhost:8080/admin-ws/services/user/services/user/getUser //This is the winner with your current set up
@Path("/user")
== 附加/user
到前一个http://localhost:8080/admin-ws/services/user/getUser
@Path("/services/user/getUser")
== 附加/services/user/getUser
到前一个@ApplicationPath("/services") public class WebConfig extends Application { } @Path("/users") public class UserResource implements Serializable { @Inject private UserService userService; @GET @Path("/{id}") @Produces(MediaType.APPLICATION_JSON) public UserWsPojo getUser(@PathParam("id") String id) { UserWsPojo uwp = userService.getUserById(id); return uwp; } }
您使用的是什么:
http://localhost:8080/admin-ws/services/users/12344 // some user id
有什么不同?
How it ShouldLook : to follow good REST (naming included) practices
它应该如何:遵循良好的 REST(包括命名)实践
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
@ApplicationPath("/services")
public class WebConfig extends Application {
// No methods defined inside
}
Access:
使用权:
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;
import javax.ws.rs.Produces;
@Path("/greet")
public class SayHello {
@GET
@Path("/{username}")
@Produces("text/html")
public Response printMessage(@PathParam("username") String username) {
return Response.status(200).entity("Hello " + username).build();
}
}
回答by Badri
Consolidating all the response and below code should work. Tested in tomcat 7.0.56, RESTEasy 3.0.10, Netbeans 8.0.2
合并所有响应和以下代码应该可以工作。在 tomcat 7.0.56、RESTEasy 3.0.10、Netbeans 8.0.2 中测试
WebConfig.java:
WebConfig.java:
<?xml version="1.0" encoding="UTF-8"?>
<!-- With RESTEasy no web.xml configuration required-->
<web-app 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_3_0.xsd"
version="3.0">
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
</web-app>
SayHello.java:
说你好.java:
http://hostname:<port>/<yourappcontext>/services/greet/<enterusername>
Netbeans generated web.xml: no change needed
Netbeans 生成的 web.xml:无需更改
Hello <username>
URL to Your REST SERVICE:
您的 REST 服务的 URL:
<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.easyrest</groupId>
<artifactId>easyrest</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>easyrest</name>
<properties>
<endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<!-- Add POM dependencies -->
<repositories>
<repository>
<id>org.jboss.resteasy</id>
<url>http://repo.maven.apache.org/maven2/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>3.0.10.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-servlet-initializer</artifactId>
<version>3.0.10.Final</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<compilerArguments>
<endorseddirs>${endorsed.dir}</endorseddirs>
</compilerArguments>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.1</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<outputDirectory>${endorsed.dir}</outputDirectory>
<silent>true</silent>
<artifactItems>
<artifactItem>
<groupId>javax</groupId>
<artifactId>javaee-endorsed-api</artifactId>
<version>6.0</version>
<type>jar</type>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Expected Response:
预期回应:
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>3.0.11.Final</version>
</dependency>
Netbeans generated POM.XML: (make sure to include resteasy-servlet-initializer dependency if using tomcat and version 2.3 or greater for maven-war-plugin)
Netbeans 生成的 POM.XML:(如果使用 tomcat 和版本 2.3 或更高版本的 maven-war-plugin,请确保包含 resteasy-servlet-initializer 依赖项)
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>3.0.4.Final</version>
</dependency>
回答by Raphael
I got the same issue when I tried with 3.0.11.Final
当我尝试使用 3.0.11.Final 时遇到了同样的问题
/**
* Application class
*/
package com.abc.admin.services.config;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
@ApplicationPath("/services") // the begining of the Webservice URL
public class WebConfig extends Application {
private Set<Object> singletons = new HashSet<Object>();
public WebConfig() {
singletons.add(new UserResource());
}
@Override
public Set<Object> getSingletons() {
return singletons;
}
}
but when I tried with another version it worked.
但是当我尝试使用另一个版本时它起作用了。
/**
* Resource class
*/
package com.abc.admin.service;
import java.io.Serializable;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import com.abc.commons.ws.entity.UserWsPojo;
@Path("/user")
public class UserResource implements Serializable {
private static final long serialVersionUID = 6766329501327292893L;
@GET
// there is a URL concatenation to access the method (.../services/user/getUser)
@Path("/getUser")
@Produces(MediaType.APPLICATION_JSON)
public UserWsPojo getUser(String id) {
UserWsPojo uwp = new UserWsPojo();
uwp.setName("Aayush");
uwp.setSurname("Devmurari");
return uwp;
}
}
Hope this helps.
希望这可以帮助。
回答by r_rosa
I faced the same problem (javax.ws.rs.NotFoundException: Could not find resource for full path ...). Based on this link, the steps to solve the issue are below:
我遇到了同样的问题(javax.ws.rs.NotFoundException:找不到完整路径的资源......)。基于此链接,解决问题的步骤如下:
1) Set the application class:
1)设置应用类:
<?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_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>restContext</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<context-param>
<param-name>resteasy.servlet.mapping.prefix</param-name>
<param-value>/rest</param-value>
</context-param>
<servlet>
<servlet-name>resteasy-servlet</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.abc.admin.services.config.WebConfig</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>resteasy-servlet</servlet-name>
<url-pattern>/rest/*</url-pattern> <!-- /* is not a comment, but part of the setting -->
</servlet-mapping>
</web-app>
2) Set the Resource class:
2)设置资源类:
This is a runtime exception indicating a resource requested by a client was not found on the server.
Add below entry into your web.xml :
<context-param>
<param-name>resteasy.resources</param-name>
<param-value>com.org.abc.xyz.MainClassName</param-value>
</context-param>
3) Set the web.xml:
3)设置web.xml:
@Path("/create")
public Response createObject(){
}
//correct
@GET // or @POST
@Path("/create")
public Response createObject(){
}
4) Test the configuration in a browser:
http://localhost:8080/restContext/rest/services/user/getUser
4)在浏览器中测试配置:
http://localhost:8080/restContext/rest/services/user/getUser
回答by vjOnstack
This works for all my services.
这适用于我的所有服务。
You can specify fully qualified name of your JAX-RS resource class name you want to register. If you have multiple classes entries, use comma delimiter.
您可以指定要注册的 JAX-RS 资源类名称的完全限定名称。如果您有多个类条目,请使用逗号分隔符。
回答by Vinh
I've got same issue (NotFound). After debugging, it turned out that I missed the method. (@GET, @POST...) on the controller
我有同样的问题(NotFound)。经过调试,原来是我漏掉了方法。(@GET, @POST...) 在控制器上
##代码##