JAX-RSの設定とリソースクラスを作成する
ここからは、先程新規作成したWebアプリケーションのプロジェクトにJAX-RSで利用するクラスを追加します。必要な設定ファイルや定義は作成ウィザードが自動生成します。
まず始めにSampleAppプロジェクトを選択した状態で右クリックすると、次の図のようにコンテキストメニューが表示されますので、「新規」を選び、続いて「その他...」を選びます。
新規ファイルの作成ウィザードが表示されたら、カテゴリから「Webサービス」を選択し、ファイルタイプから「パターンからのRESTful Webサービス」を選択します。
その他、この画面から選択できるWebサービスの概略は以下のとおりです。
ファイルタイプ | 概要 |
---|---|
Webサービス | Webサービスのスケルトンコードとアノテーションを作成する。 サービスへのアクセスはSOAPを利用。 |
WSDLからのWebサービス | 定義済みのWSDL(※3)からWebサービスのスケルトンコードと アノテーションを作成する。 |
エンティティ・クラスからの RESTful Webサービス |
作成済みのエンティティクラス(※4)から JAX-RSのWebサービスを作成する。 |
データベースからの RESTful Webサービス |
NetBeansが接続しているデータベースのテーブルを選択し、 JAX-RSのWebサービスを作成する。 |
選択した後、「次」ボタンを押します。
次にパターン選択画面が表示されます。今回はシンプルなものを使いますのでデフォルトで選択されている「単純なルート・リソース」を使います。
ここで選択できるパターンについては以下のとおりです。
パターン | 概要 |
---|---|
単純なルート・リソース | JAX-RSのサービス作成で最低限必要な設定と リソースクラス、メソッドを自動生成する。 |
コンテナと項目 | リソースを格納するコンテナリソースとJAX-RSのサービスの設定、 クラス、メソッドを自動生成する。リソースの格納はPOSTで行われる。 |
クライアント制御 コンテナと項目 |
リソースを格納するコンテナリソースとJAX-RSのサービスの設定、 クラス、メソッドを自動生成する。リソースの格納はPUTで行われる。 |
「次」ボタンを押すと、以下のリソース定義の画面が表示されます。
ここでは実際に生成されるクラスの定義やリクエストするURIの定義を行います。以下の項目を編集します。
項目名 | 入力内容 | 説明 |
---|---|---|
リソース・パッケージ | sample.webservice | 生成するクラスを格納するパッケージ |
パス | user | サービスのパス |
クラス名 | UserResource | 生成クラス名 |
MIMEタイプ | text/plain | リソースが返すコンテンツタイプ |
以上を入力した後「終了」ボタンを押すと、JAX-RS用のリソースクラスと設定が自動生成され、プロジェクトにJAX-RSが搭載されます。
なお、生成されたクラスは以下のようになっており、図9で設定したJAX-RSの設定はアノテーションで定義されています。
package sample.webservice; import javax.ws.rs.core.Context; import javax.ws.rs.core.UriInfo; import javax.ws.rs.PathParam; import javax.ws.rs.Consumes; import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.GET; import javax.ws.rs.Produces; /** * REST Web Service * * @author A-pZ */ @Path("user") … (1) public class UserResource { /** * Retrieves representation of an instance of sample.webservice.UserResource * @return an instance of java.lang.String */ @GET … (2) @Produces("text/plain") public String getText() { //TODO return proper representation object throw new UnsupportedOperationException(); } /** * PUT method for updating or creating an instance of UserResource * @param content representation for the resource * @return an HTTP response with content of the updated or created resource. */ @PUT …(3) @Consumes("text/plain") public void putText(String content) { } }
リスト中にある(1)(2)(3)が、JAX-RSの定義を行うアノテーションです。図9で指定したパスを@Pathで設定し、HTTPメソッドに対応した@GETや@PUTの定義とメソッドも生成されます。JAX-RSで利用するアノテーションにはこれ以外にもいくつかありますが、今回サンプルコードを交えて紹介するのは@Pathや@GETの定義と、パラメータを拡張したときの@PathParamの動作と確認方法です。