带有 JAX-RS tomcat 服务器的 REST 返回 "requested resource is not available"

标签 rest api tomcat jax-rs

我在关注空头 tutorial关于使用 JAX-RS 创建 REST api。我正在使用 Tomcat 服务器 v7.0。当我在服务器上运行应用程序时,出现错误 404-requested resource is not available。 该项目是基于 Maven 的,我的 pom.xml 文件包含以下行

  <properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>
 </properties>

因此我没有 web.xml 文件。这就是本教程的实现方式。我没有 index.html/jsp 文件。我创建了两个类 RESTconfig.javaBookResources.java

...import statements 
@ApplicationPath("api")
public class RESTconfig extends Application {

}

...import statements
@Path("books")
public class BookResources {

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String books() {
        return "Hello world";
    }
}

我的 pom.xml 文件如下所示

<groupId>com.dere</groupId>
  <artifactId>myrest</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
    <properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>
  </properties>
  <dependencies>
  <dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-api</artifactId>
    <version>7.0</version>
    <scope>provided</scope>
 </dependency>

一旦我在服务器上运行应用程序并转到 http://localhost:9090 我就可以看到 Tomcat 主页,但是如果尝试获取数据 http://localhost:9090/myrest/api/books 我收到 404 错误,即请求的资源不可用,我在上面提到过。 我在网上看到的大多数示例或用法都涉及使用 web.xml 并提供应用程序的根目录和使用 servlet。这是我第一次接触构建 REST api。我可能误解了整个事情,或者我跳过了一些步骤。我期待着你的帮助。 我正在为 Java EE 使用 Eclipse Photon

最佳答案

看看这个

<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-api</artifactId>
    <version>7.0</version>
</dependency>

这基本上只是一堆 EE 规范的接口(interface)。没有实现。 Java EE 服务器将具有实现。 Tomcat 不是 EE 服务器。 EE 规范中唯一肯定会实现的部分是 Servlet 和 JSP(Web 配置文件)。如果您需要 EE 服务器,请查看 Glassfish 或 Wildfly。

您正在尝试使用 JAX-RS 规范,默认情况下 Tomcat 肯定没有实现。所以你需要添加那个实现。最简单的实现,IMO 开始,是 Jersey。您可以简单地添加此依赖项

<dependency>
    <groupId>org.glassfish.jersey.containers</groupId>
    <artifactId>jersey-container-servlet</artifactId>
    <version>2.25.1</version>
</dependency>

它会让你启动并运行。保留 Jersey User Guide便利。它将派上用场。

关于带有 JAX-RS tomcat 服务器的 REST 返回 "requested resource is not available",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52034068/

相关文章:

rest - Spring 4 RestController JSON : characteristics not acceptable according to the request "accept" headers

java - 三星 Galaxy S4 的 Avd 无法正常工作

java - 禁用Tomcat中所有默认的HTTP错误响应内容

tomcat - 将多个 lib 目录添加到我的 java WebApp

javascript - app android - 外部资源实现

rest - 如何使用隔离的前端托管多服务解决方案

python - Wandisco:通过 REST 创建新的复制规则

java - 保护私有(private)内部 Web API 免受公共(public)访问的机制

security - SSL:如何平衡 API 性能与安全性?

java - HttpConnection维护Session