第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-client、および kitchensink クイックスタートを参照してください。

注記

JBoss EAP は resteasy-cryptoresteasy-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 アプリケーションで公開されます。
  • getClassesgetSingletons両方が空のコレクションを返す場合、web アプリケーションでパッケージ化された root リソースクラスおよびプロバイダーはすべて JAX-RS アプリケーションに含まれます。その後、RESTEasy はこれらのリソースを自動的に検出します。