SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Java EE 6 開発入門

JAX-RSを使ったWebサービスの作成

Java EE 6 開発入門(8)


  • X ポスト
  • このエントリーをはてなブックマークに追加

ダウンロード サンプルファイル (20.4 KB)
ダウンロード SampleApp7.zip (20.5 KB)

JAX-RSの設定とリソースクラスを作成する

 ここからは、先程新規作成したWebアプリケーションのプロジェクトにJAX-RSで利用するクラスを追加します。必要な設定ファイルや定義は作成ウィザードが自動生成します。

 まず始めにSampleAppプロジェクトを選択した状態で右クリックすると、次の図のようにコンテキストメニューが表示されますので、「新規」を選び、続いて「その他...」を選びます。

図5 新規作成ウィザードの起動メニュー
図5 新規作成ウィザードの起動メニュー

 新規ファイルの作成ウィザードが表示されたら、カテゴリから「Webサービス」を選択し、ファイルタイプから「パターンからのRESTful Webサービス」を選択します。

図6 新規作成ファイルタイプの選択
図6 新規作成ファイルタイプの選択

 その他、この画面から選択できるWebサービスの概略は以下のとおりです。

表2 新規作成で選択可能なWebサービスの種類
ファイルタイプ 概要
Webサービス Webサービスのスケルトンコードとアノテーションを作成する。
サービスへのアクセスはSOAPを利用。
WSDLからのWebサービス 定義済みのWSDL(※3)からWebサービスのスケルトンコードと
アノテーションを作成する。
エンティティ・クラスからの
RESTful Webサービス
作成済みのエンティティクラス(※4)から
JAX-RSのWebサービスを作成する。
データベースからの
RESTful Webサービス
NetBeansが接続しているデータベースのテーブルを選択し、
JAX-RSのWebサービスを作成する。
※3

 Web Service Description Languageの略。Webサービスの定義ファイル。

※4

 データベースやデータ定義ファイルなどのデータを保持するクラス。

 選択した後、「次」ボタンを押します。

 次にパターン選択画面が表示されます。今回はシンプルなものを使いますのでデフォルトで選択されている「単純なルート・リソース」を使います。

図7 RESTful Webサービスのデザインパターン選択画面
図7 RESTful Webサービスのデザインパターン選択画面

 ここで選択できるパターンについては以下のとおりです。

表3 パターンからのRESTFul Webサービスで選択できる作成パターン
パターン 概要
単純なルート・リソース JAX-RSのサービス作成で最低限必要な設定と
リソースクラス、メソッドを自動生成する。
コンテナと項目 リソースを格納するコンテナリソースとJAX-RSのサービスの設定、
クラス、メソッドを自動生成する。リソースの格納はPOSTで行われる。
クライアント制御
コンテナと項目
リソースを格納するコンテナリソースとJAX-RSのサービスの設定、
クラス、メソッドを自動生成する。リソースの格納はPUTで行われる。

 「次」ボタンを押すと、以下のリソース定義の画面が表示されます。

図8 リソース・クラス指定画面
図8 リソース・クラス指定画面

 ここでは実際に生成されるクラスの定義やリクエストするURIの定義を行います。以下の項目を編集します。

表4 リソース・クラス指定画面で入力する項目
項目名 入力内容 説明
リソース・パッケージ sample.webservice 生成するクラスを格納するパッケージ
パス user サービスのパス
クラス名 UserResource 生成クラス名
MIMEタイプ text/plain リソースが返すコンテンツタイプ

 以上を入力した後「終了」ボタンを押すと、JAX-RS用のリソースクラスと設定が自動生成され、プロジェクトにJAX-RSが搭載されます。

図9 プロジェクトにJAX-RSが搭載された状態
図9 プロジェクトにJAX-RSが搭載された状態

 なお、生成されたクラスは以下のようになっており、図9で設定したJAX-RSの設定はアノテーションで定義されています。

リスト1 ウィザードで生成したリソースクラス UserResource.java
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の動作と確認方法です。

次のページ
まとめ

修正履歴

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Java EE 6 開発入門連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 東 浩二(アズマ コウジ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/7189 2013/07/05 07:02

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング