第 2 章 开发 JAX-RS Web 服务
JAX-RS 是 RESTful Web 服务的 Java API。它通过使用注释,为使用 REST 构建 Web 服务提供支持。这些注释简化了将 Java 对象映射到 Web 资源的过程。
RESTEasy 是红帽 JBoss 企业应用平台 7 实施 JAX-RS,完全符合 JSR 370:适用于 RESTful Web 服务的 Java™ API(JAX-RS 2.1) 规范。它还为规范提供了额外的功能。
红帽 JBoss 企业应用平台的 7.3 版本还符合 Jakarta 企业 Web 服务 1.4 和 Jakarta RESTful Web Services 2.1 Jakarta EE 规范。
要开始使用 JAX-RS,请参阅红帽 JBoss 企业应用平台 7 提供的 helloworld
和 -rs
、jaxrs-clientkitchensink
快速入门。
JBoss EAP 不支持 resteasy-crypto
、resteasy-yaml-provider
和 jose-jwt
模块。
2.1. JAX-RS 应用
在创建供应商和 Web 资源时,您可以使用以下命令来声明它们:
-
不带
web.xml 文件的
javax.ws.rs.core.Application
的简单子类别. -
使用
web.xml 文件.
-
子类
javax.ws.rs.core.Application
并提供自定义实施.
2.1.1. 简单子类 javax.ws.rs.core.Application
您可以使用 javax.ws.rs.core.Application
类来创建声明这些提供程序和 Web 资源的子类。此类由 JBoss EAP 随附的 RESTEasy 库提供。
若要使用 javax.ws.rs.core.Application
配置资源或提供程序,只需创建一个扩展它的类并添加 @ApplicationPath
注释。
示例:应用程序类
import javax.ws.rs.ApplicationPath; import javax.ws.rs.core.Application; @ApplicationPath("/root-path") public class MyApplication extends Application { }
2.1.2. 使用 web.xml
或者,如果您不想创建扩展 javax.ws.rs.core.Application
的类,您可以将以下内容添加到您的 web.xml
文件中:
示例:web.xml
<web-app version="3.0" 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"> <servlet> <servlet-name>javax.ws.rs.core.Application</servlet-name> </servlet> <servlet-mapping> <servlet-name>javax.ws.rs.core.Application</servlet-name> <url-pattern>/root-path/*</url-pattern> </servlet-mapping> ... </web-app>
2.1.3. 带有自定义实现的子类 javax.ws.rs.core.Application
在子类 javax.ws.rs.core.Application
时,您可以选择为任何现有方法提供自定义实施。getClasses
和 getSingletons
方法返回一系列必须包含在发布的 JAX-RS 应用中的类或单例集合。
-
如果
getClasses
和getSingletons 返回了
非空集合,则 JAX-RS 应用 中仅 发布了这些类和单例。 -
如果
getClasses
和getSingletons 都
返回一个空集合,则 Web 应用中打包 的所有 根资源类和提供程序 都包含 在 JAX-RS 应用中。RESTEasy 随后将自动发现这些资源。