JAX-RS は、サーバー・サイドの REST アプリケーションの開発を簡単にする、インターフェースおよび Java™ アノテーションの集合です。
JAX-RS テクノロジーを使用することによって、
REST (Representational State Transfer) アプリケーションは、他のタイプの分散システムと比較して、
開発が容易であり、コンシュームが簡単です。
このタスクについて
JAX-RS は、REST アプリケーションを迅速に開発する
ための Java API です。JAX-RS は、サーブレットよりも迅速に Web アプリケーションを開発する手段を提供しますが、JAX-RS の主目的は RESTful サービスを作成することです。JAX-RS 1.0 は、REST アプリケーションを構築するためのサーバー・サイド・コンポーネント API を定義します。JAX-RS の IBM® 実装
は、JAX-RS (JSR 311) 仕様の実装を提供します。
この入門ガイドは、単純な JAX-RS Web アプリケーションを素早く開発し、デプロイできるよう支援します。
ここで説明する手順では、Web アプリケーション・アーカイブ (WAR) モジュール内にパッケージされた単純な Hello World サービスの開発を示します。
手順
- Java クラスを作成します。 このクラスは、リソースの 1 つのタイプを表すのに使用されます。
package com.ibm.jaxrs.sample;
public class HelloWorldResource {
}
- この Java クラスに
javax.ws.rs.Path アノテーションを付けます。 このアノテーションの値は、アプリケーション・コンテキストの
後の、URL の相対部分です。アプリケーション・コンテキスト
は、デプロイメント中に完全に定義されます。JAX-RS 用語
では、このクラスをルート・リソースと呼びます。
package com.ibm.jaxrs.sample;
@javax.ws.rs.Path("/helloworld")
public class HelloWorldResource {
}
- Hello World! 応答を返す Java メソッド
を作成します。 このメソッドは HTTP 要求を受け取ったときに起動されることを目的としています。
package com.ibm.jaxrs.sample;
@javax.ws.rs.Path("/helloworld")
public class HelloWorldResource {
public String sayHelloWorld() {
return "Hello World!";
}
}
- この Java メソッドに javax.ws.rs.GET アノテーションを追加します。
これで、HTTP GET 要求が
/helloworld パスへアプリケーションによって
受け取られると、
sayHelloWorld Java メソッド
が起動されるようになります。応答メッセージ本体にはコンテンツとして
Hello
World! が含まれます。
package com.ibm.jaxrs.sample;
@javax.ws.rs.Path("/helloworld")
public class HelloWorldResource {
@javax.ws.rs.GET
public String sayHelloWorld() {
return "Hello World!";
}
}
リソース実装はこれで完了です。
- JAX-RS javax.ws.rs.core.Application 構成サブクラス
を作成する必要があります。 このサブクラスは、
JAX-RS ランタイム環境に関連する Java クラスの
セットを戻す必要があります。
package com.ibm.jaxrs.sample;
public class HelloWorldAppConfig extends javax.ws.rs.core.Application {
public Set<Class<?>> getClasses() {
Set<Class<?>> classes = new HashSet<Class<?>>();
classes.add(com.ibm.jaxrs.sample.HelloWorldResource.class);
return classes;
}
}
- web.xml Web モジュール構成ファイルを作成します。
このファイルは、Web モジュールが IBM JAX-RS REST サーブレットを含んでいることを Web コンテナーに知らせます。IBM JAX-RS REST サーブレットを
アプリケーション構成クラスで初期化する必要があります。
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" 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_2_4.xsd">
<servlet>
<servlet-name>HelloWorldApp</servlet-name>
<servlet-class>com.ibm.websphere.jaxrs.server.IBMRestServlet</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.ibm.jaxrs.sample.HelloWorldAppConfig</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldApp</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
前の例に指定されているサーブレット・マッピング
を参照してください。パターンは、RESTful サービスの
最終的な URL を決定するのに役立ちます。
- j2ee.jar ファイルをクラスパスに追加します。
app_server_root/dev/JavaEE ディレクトリーから j2ee.jar ファイルを取得し、JAR ファイルをクラスパスに追加します。クラスをコンパイルします。
- Web アプリケーションをアセンブルします。
JDK に同梱されている
jar コマンド行ツールを
使用して、以下のコマンドを実行します。
jar cvf helloworld-jaxrs.war *
この
コマンドで WAR ファイルが作成されます。
- アプリケーション・サーバーにアプリケーションをデプロイします。
アプリケーションをデプロイするとき、モジュールのコンテキスト・ルート
の値を入力するよう求めるプロンプトが出されることがあります。コンテキスト・ルート
は、アプリケーション・コンテキストを定義するのに使用されます。
IBM JAX-RS サーブレットを使用するときには、
以下の URL がアプリケーション・コンテキストを定義します。
http://<your_hostname>:<your Web_container_port>/<context_root_of_Web_application>/servlet_mapping_pattern
@javax.ws.rs.Path の値で
指定されるルート・リソース URL は、アプリケーション・コンテキスト・ルートに対して相対的です。例えば、
デプロイメント中にコンテキスト・ルートが
myapplication と
定義され、
web.xml ファイル内に URL パターンが
/rest/* と定義され、
Java ルート・リソース・クラス
の
@javax.ws.rs.Path 値が
/helloworld だとします。この場合、
最終的な URL は次の例のようになります。
http://localhost:9080/myapplication/rest/helloworld
これで、Web ブラウザーまたは他の HTTP クライアントを使用して、クライアント要求を最終的な URL に送信できるようになります。
タスクの結果
JAX-RS Web アプリケーションの開発とアプリケーション・サーバーへのデプロイが完了しました。