Java™ API for RESTful Web Services (JAX-RS) アプリケーションは、各自のニーズに応じていくつかの方法で構成できます。Java Platform,
Enterprise Edition (Java EE)
6 の機能を活用するには、アノテーション・スキャン機能を使用します。
アノテーション・スキャンを使用することにより、JAX-RS javax.ws.rs.core.Application サブクラス
を省略したり、javax.ws.rs.core.Application サブクラスの定義を最低限にすることができます。
このタスクについて
JAX-RS 1.1 仕様では、JAX-RS アプリケーションを構成するための新しい方法がいくつかサポートされています。アプリケーションの自動構成に役立つ、標準装備のアノテーション・スキャンを使用することができます。オプションで、javax.ws.rs.core.Application サブクラスをお使いのアプリケーションに追加してから、javax.ws.rs.ApplicationPath アノテーションまたは web.xml サーブレット定義を使用して、必要な URL パターンを追加できます。IBM® JAX-RS 実装環境を使用する場合には、サーブレット・クラスの実装を指定する必要はありません。これは、JAX-RS アプリケーションが開始されるまでに、Web モジュールの構成に自動的に追加されます。
web.xml ファイルを使用している場合は、Java サーブレット 3.0 の web.xml ファイルを使用する必要があります。
手順
- web.xml ファイルで JAX-RS のデフォルト・アプリケーションを 1 つだけ使用して、JAX-RS アプリケーションを構成します。 この方法は、1 つの JAX-RS アプリケーションのみが必要であり、すべてのリソース・クラスが単一の URL パターンの後ろに配置される場合に使用します。この方法を使用して、必要に応じてセキュリティー制約を指定することもできます。
- JAX-RS のリソース・クラスとプロバイダー・クラスをすべて、Web アプリケーションの WEB-INF/classes ディレクトリーまたは WEB-INF/lib ディレクトリーに追加します。 javax.ws.rs.core.Application サブクラスを Web アプリケーションに追加する必要はありません。
- web.xml ファイルに、サーブレット名として javax.ws.rs.core.Application を使用して、サーブレット定義を追加します。 サーブレット・クラスを追加する必要はありません。サーブレット URL パターンを web.xml ファイルに追加する必要があります。アプリケーション・サーバーのランタイム環境は、JAX-RS アプリケーションが開始されるまでに、特定の IBM JAX-RS 実装環境を Web モジュールの構成に追加します。例えば、以下のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_3_0.xsd"
version="3.0">
<servlet>
<servlet-name>javax.ws.rs.core.Application</servlet-name>
</servlet>
<servlet-mapping>
<servlet-name>javax.ws.rs.core.Application</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
これで JAX-RS リソースは、次の例のような URL で使用できるようになります。http://{hostname}:{port}/{context_root_of_Web_ module}/{value_of_Web.xml_URL_pattern}/{value_of_@javax.ws.rs.Path}
- javax.ws.rs.core.Application サブクラスと web.xml ファイルを使用して、JAX-RS アプリケーションを構成します。 この方法は、複数の JAX-RS アプリケーションが必要な場合、または特定の URL パターンを持ついくつかのリソースのみを含む特定の JAX-RS アプリケーションが必要な場合に使用します。この方法を使用して、必要に応じてセキュリティー制約を指定することもできます。
- javax.ws.rs.core.Application サブクラスを作成します。 javax.ws.rs.core.Application サブクラスの getClasses() メソッドまたは getSingletons() メソッドで、該当する JAX-RS リソースおよびプロバイダーを返します。getClasses() メソッドと getSingletons() メソッドの両方で空のセットを返すと、アプリケーション内で検出されるすべての JAX-RS リソース・クラスおよびプロバイダー・クラスが、JAX-RS アプリケーション・サブクラスに追加されます。例えば、以下のようになります。
package com.example;
public class MyApplication extends javax.ws.rs.core.Application {
}
この例では、空のセットを返す、javax.ws.rs.core.Application サブクラスの getClasses() メソッドと getSingletons() メソッドのデフォルトの実装を使用します。したがって、関連するすべての JAX-RS クラスが、javax.ws.rs.core.Application サブクラスによって返されるものと想定されます。
- javax.ws.rs.core.Application サブクラスをお使いの Web アプリケーションに追加します。
- web.xml ファイルで一部のサーブレット定義を追加します。 サーブレット名は javax.ws.rs.core.Application サブクラスのフルネームです。servlet-class は定義しないでください。サーブレット URL パターンを web.xml ファイルに追加する必要があります。アプリケーション・サーバーのランタイム環境は、JAX-RS アプリケーションが開始されるまでに、特定の IBM JAX-RS 実装環境を Web モジュールの構成に追加します。例えば、以下のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_3_0.xsd"
version="3.0">
<servlet>
<servlet-name>com.example.MyApplication</servlet-name>
</servlet>
<servlet-mapping>
<servlet-name>com.example.MyApplication</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
これで JAX-RS リソースは、次の例のような URL で使用できるようになります。http://{hostname}:{port}/{context_root_of_Web_ module}/{value_of_Web.xml_URL_pattern_for_Application_subclass}/{value_of_@javax.ws.rs.Path}
- web.xml ファイルを使用せずに JAX-RS アプリケーションを構成します。 この方法は、web.xml ファイルを使用する必要がない場合に使用します。この方法を使用する場合は、セキュリティー制約を指定できません。セキュリティー制約を指定するには、web.xml ファイルを使用する必要があります。
- javax.ws.rs.core.Application サブクラスを作成します。 javax.ws.rs.core.Application サブクラスの getClasses() メソッドまたは getSingletons() メソッドで、該当する JAX-RS リソースおよびプロバイダーを返します。getClasses() メソッドと getSingletons() メソッドの両方で空のセットを返すと、アプリケーション内で検出されるすべての JAX-RS リソース・クラスおよびプロバイダー・クラスが、JAX-RS アプリケーション・サブクラスに追加されます。例えば、以下のようになります。
package com.example;
public class MyApplication extends javax.ws.rs.core.Application {
}
この例では、空のセットを返す、javax.ws.rs.core.Application サブクラスの getClasses() メソッドと getSingletons() メソッドのデフォルトの実装を使用します。したがって、関連するすべての JAX-RS クラスが、javax.ws.rs.core.Application サブクラスによって返されるものと想定されます。
- javax.ws.rs.ApplicationPath アノテーションを javax.ws.rs.core.Application サブクラスに追加します。 ApplicationPath アノテーションは、JAX-RS 1.1 仕様でサポートされます。ApplicationPath アノテーションの値は、web.xml ファイル内のサーブレット URL パターンと同等のサーブレット URL パターンとして使用されます。例えば、以下のようになります。
package com.example;
@javax.ws.rs.ApplicationPath("rest")
public class MyApplication extends javax.ws.rs.core.Application {
}
- javax.ws.rs.core.Application サブクラスをお使いの Web アプリケーションに追加します。 アプリケーションが開始されると、リソースは以下の URL で使用可能になります。
http://{hostname}:{port}/{context_root_of_Web_ module}/{value_of_@javax.ws.rs.ApplicationPath}}/{value_of_@javax.ws.rs.Path}
タスクの結果
アプリケーションを自動的に構成する際に役立つアノテーション・スキャンを利用することで、JAX-RS 1.1 でサポートされるメソッドを使用した JAX-RS アプリケーションの構成が終了しました。