无法找到REST资源的路径(Wildfly 22.0.0部署)



当我部署我的Web应用程序到Wildfly 22.0.0时,我似乎找不到我的Rest资源的路径:

Could not find resource for full path: http://127.0.0.1:8080/CourseManagementApplication/rest/api/assignments/list

我不知道我做错了什么。

web . xml

<servlet>
<servlet-name>RestApplication</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>impl.rest.application.RestApplication</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>RestApplication</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>

RestApplication.java

@ApplicationPath("/api")
public class RestApplication extends Application {
@Override
public Set<Class<?>> getClasses() {
final Set<Class<?>> classes = new HashSet<>();
classes.add(AssignmentResource.class);
return classes;
}
}

AssignmentResource.java

@Path("/assignments")
public class AssignmentResource {
@GET
@Path("/list")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Response getAssignments() {
return ........
}
}

我认为资源可以通过URI [Root]/rest/api/assignments/list访问。我不明白为什么这条路行不通。

这段代码有两个问题:

1-正如上面的评论中提到的,我不应该同时使用servlet-mapping和@ApplicationPath。所以我删除了@ApplicationPathRestApplication.java注释.

2-我没有意识到,为了使用不同于/*的url模式,你不仅应该在server-mapping中定义它,而且还需要将context-param添加到web.xml,如

<context-param>
<param-name>resteasy.servlet.mapping.prefix</param-name>
<param-value>/rest</param-value>
</context-param>

因此端点在http://127.0.0.1:8080/CourseManagementApplication/rest/assignments/list

中变得正确可用

最新更新