Java 带有路径注释的简单REST服务-404错误

Java 带有路径注释的简单REST服务-404错误,java,web-services,rest,jboss,jax-rs,Java,Web Services,Rest,Jboss,Jax Rs,我需要什么来让这个极简主义的REST示例工作 项目名称:hello rest 应用程序代码: import javax.ws.rs.ApplicationPath; import javax.ws.rs.core.Application; @ApplicationPath("resources") public class MyJAXWSApp extends Application { } 信息资源: import javax.ws.rs.GET; import javax.ws.rs.P

我需要什么来让这个极简主义的REST示例工作

项目名称:hello rest

应用程序代码:

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;

@ApplicationPath("resources")
public class MyJAXWSApp extends Application {
}
信息资源:

import javax.ws.rs.GET;
import javax.ws.rs.Path;

    @Path("message")
    public class MessageResource {
    @GET
    public String Hello() {
        return "hello!";
    }
}
MAVEN配置:

<dependency>
   <groupId>javax</groupId>
   <artifactId>javaee-api</artifactId>
   <version>7.0</version>
   <scope>provided</scope>
</dependency>
资料来源:

PS:服务器部署正常:

22:20:04486信息[org.wildfly.extension.undertow](MSC服务线程1-2)WFLYUT0006:undertow HTTP侦听器默认侦听127.0.0.1:8080

22:20:04582信息[org.jboss.as.server.deployment](MSC服务线程1-5)WFLYSRV0027:开始部署“hello-rest-0.0.1-SNAPSHOT.war”(运行时名称:“hello-rest-0.0.1-SNAPSHOT.war”)

22:20:04974信息[org.wildfly.extension.undertow](MSC服务线程1-3)WFLYUT0006:undertow HTTPS侦听器HTTPS侦听127.0.0.1:8443

22:20:06992信息[org.jboss.resteasy.resteasy_jaxrs.i18n](ServerService线程池--59)resteasy00225:部署javax.ws.rs.core.Application:类jaxrConfiguration

22:20:07074信息[org.wildfly.extension.undertow](服务器服务线程池--59)WFLYUT0021:注册的web上下文:/hello-rest-0.0.1-SNAPSHOT

22:20:07135信息[org.jboss.as.server](服务器服务线程池--34)WFLYSRV0010:部署了“hello-rest-0.0.1-SNAPSHOT.war”(运行时名称:“hello-rest-0.0.1-SNAPSHOT.war”)


您的
MyJAXWSApp
中有这个吗

private void addRestResourceClasses(Set<Class<?>> resources) {
    resources.add(your.package.name.MessageResource.class);
}

private void addrestresourcelasses(Set你的
MyJAXWSApp
中有这个吗

private void addRestResourceClasses(Set<Class<?>> resources) {
    resources.add(your.package.name.MessageResource.class);
}

private void addrestresourcelasses(Set我在您的服务器输出中看到的一件事是它将路径注册为“/hello-rest-0.0.1-SNAPSHOT”。因此,在您更改Maven配置以不将版本附加到war之前,您必须在调用服务时将“-0.0.1-SNAPSHOT”添加到URL中。

i、 e.

我也一直认为资源(不是方法)上的ApplicationPath和Path注释是以“/”开头的。我不确定这是否是必需的,但无论如何,我建议将其作为最佳实践


更新:查找它,从JAX-RS 2开始,应该不需要前后斜杠。

我在您的服务器输出中看到的一件事是,它将路径注册为“/hello-rest-0.0.1-SNAPSHOT”。因此,在您更改Maven配置以不将版本附加到war之前,您必须添加“-0.0.1-SNAPSHOT”调用该服务时,将链接到您的URL。
i、 e.

我也一直认为资源(不是方法)上的ApplicationPath和Path注释是以“/”开头的。我不确定这是否是必需的,但无论如何,我建议将其作为最佳实践


更新:查找后,从JAX-RS 2开始,不需要尾斜杠和前导斜杠。

根据29.2.7.1,他不必这样做:“默认情况下,存档中的所有资源都将被处理为资源。”根据Oracle文档,这是不必要的。但我确实尝试过,没有明显的效果。我在您的Wildfly日志中注意到,您的web上下文是/hello-rest-0.0.1-SNAPSHOT。因此,您可能希望按照29.2.7.1进行尝试。他不应该这样做:“默认情况下,归档中的所有资源都将被处理为资源。”根据Oracle文档,这是没有必要的。但是我确实尝试过,没有明显的效果。我在你的Wildfly日志中注意到你的web上下文是/hello-rest-0.0.1-SNAPSHOT。所以你可能想尝试一下。我非常感谢你Daniel。maven版本的附加是罪魁祸首。我已经疯狂了好几个小时了。我完全失去了hindsi好的。非常感谢。没问题。这是一件在你击中几次之后你才会注意到的事情。我非常感谢你,丹尼尔。maven版本的附加是罪魁祸首。我已经疯狂了好几个小时。我完全失去了后见之明。非常感谢。没问题。这是一件在击中之前你不会注意到的事情这件事发生了几次。