第2章 JAX-RS Web サービスの開発
JAX-RS は RESTful Web サービスの Java API です。これは、アノテーションを使用して REST を使用した Web サービスを構築することをサポートします。これらのアノテーションは、Java オブジェクトを Web リソースにマッピングするプロセスを簡素化します。
RESTEasy は JAX-RS の Red Hat JBoss Enterprise Application Platform 7 実装で、JSR 370: Java™ API for RESTful Web Services (JAX-RS 2.1) 仕様に完全準拠しています。また、この仕様に追加機能も提供します。
Red Hat JBoss Enterprise Application Platform の 7.3 リリースは、Jakarta Enterprise Web Services 1.4 および Jakarta RESTful Web Services 2.1 Jakarta EE 仕様にも準拠しています。
JAX-RS を初めて使用する場合は、Red Hat JBoss Enterprise Application Platform 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 アプリケーションでパッケージ化された root リソースクラスおよびプロバイダーはすべて JAX-RS アプリケーションに含まれます。その後、RESTEasy はこれらのリソースを自動的に検出します。