REST with JAX-RS tomcat 服务器返回 "requested resource is not available"
REST with JAX-RS tomcat server returning "requested resource is not available"
我正在关注 tutorial 使用 JAX-RS 创建 REST api。我正在使用 Tomcat 服务器 v7.0。当我 运行 服务器上的应用程序出现错误 404 请求的资源不可用时。
该项目基于 Maven,我的 pom.xml 文件包含以下行
<properties>
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
因此我没有 web.xml 文件。这就是本教程的实现方式。我没有 index.html/jsp 文件。我创建了两个 类 RESTconfig.java
和 BookResources.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 规范的接口。没有实施。 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 放在手边。它会派上用场。
我正在关注 tutorial 使用 JAX-RS 创建 REST api。我正在使用 Tomcat 服务器 v7.0。当我 运行 服务器上的应用程序出现错误 404 请求的资源不可用时。 该项目基于 Maven,我的 pom.xml 文件包含以下行
<properties>
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
因此我没有 web.xml 文件。这就是本教程的实现方式。我没有 index.html/jsp 文件。我创建了两个 类 RESTconfig.java
和 BookResources.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
看看这个
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>
这基本上就是一堆 EE 规范的接口。没有实施。 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 放在手边。它会派上用场。