NetBeansを使ってWebアプリケーションを作る〜2.RESTfulな外枠をNetBeansに作らせる〜
まずはNetBeans7.2をインストール。
- ファイル→新規プロジェクト→Maven→Webアプリケーション を選択。
- 作成されるプロジェクトの名前と場所を確認。
- サーバーを選択。デフォルトのGlassFishがおすすめ。
- プロジェクトが作成されるので構成を確認する。
- プロジェクト名を右クリック→実行 を行うと自動的にMavenがコンパイル・テスト・デプロイを実し、GlassFishとブラウザが起動され、ブラウザにHello Worldが表示される。
- タスクの内容を保持するTaskクラスを作成する。
scheduledDateとtaskContentsのフィールドを入力したら、カーソルをそのフィールドの上に合わせて右クリック→リファクタリング→フィールドのカプセル化を選択するとgetterとsetterが自動で作成される。
package biz.solidc.taskmanager.model; /** * * @author m-prog */
- プロジェクト名を右クリック→新規→その他→Webサービス→パターンからのRESTful Webサービスを選択
- "コンテナと項目"パターンを選択する。
- リソース・クラスの設定を行う。
先に作成したTaskクラスを使用するように設定する。MIMEタイプはjsonを指定。
- リソース構成を指定する。
自動でRESTリソースが登録されるようにweb.xmlにRESTサーブレットアダプタの設定が追加されるようにする。
RESTのリソースパスも短く修正。
- プロジェクトの構成を確認
RESTful Webサービスに、設定されたRESTfulサービスへのURLが示されている。
/task に紐付けられているクラスはTasksResourceクラス。
/task/{id} に紐づけられているクラスはTaskResourceクラス。
どちらのクラスも自動生成された時点では、設定されたRESTfulサービスのURLにアクセスするとUnsupportedOperationExceptionが投げられるコードになっている。
/** * REST Web Service * * @author masayasu */ @Path("/task") public class TasksResource { @Context private UriInfo context; /** * Creates a new instance of TasksResource */ public TasksResource() { } /** * Retrieves representation of an instance of biz.solidc.taskmanager.rest.TasksResource * @return an instance of java.util.List */ @GET @Produces("application/json") public List getJson() { //TODO return proper representation object throw new UnsupportedOperationException(); } /** * POST method for creating an instance of TaskResource * @param content representation for the new resource * @return an HTTP response with content of the created resource */ @POST @Consumes("application/json") @Produces("application/json") public Response postJson(Task content) { //TODO return Response.created(context.getAbsolutePath()).build(); } /** * Sub-resource locator method for {id} */ @Path("{id}") public TaskResource getTaskResource(@PathParam("id") String id) { return TaskResource.getInstance(id); } }
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package biz.solidc.taskmanager.rest; import biz.solidc.taskmanager.model.Task; import javax.ws.rs.Consumes; import javax.ws.rs.PUT; import javax.ws.rs.GET; import javax.ws.rs.Produces; import javax.ws.rs.DELETE; /** * REST Web Service * * @author masayasu */ public class TaskResource { private String id; /** * Creates a new instance of TaskResource */ private TaskResource(String id) { this.id = id; } /** * Get instance of the TaskResource */ public static TaskResource getInstance(String id) { // The user may use some kind of persistence mechanism // to store and restore instances of TaskResource class. return new TaskResource(id); } /** * Retrieves representation of an instance of biz.solidc.taskmanager.rest.TaskResource * @return an instance of biz.solidc.taskmanager.model.Task */ @GET @Produces("application/json") public Task getJson() { //TODO return proper representation object throw new UnsupportedOperationException(); } /** * PUT method for updating or creating an instance of TaskResource * @param content representation for the resource * @return an HTTP response with content of the updated or created resource. */ @PUT @Consumes("application/json") public void putJson(Task content) { } /** * DELETE method for resource TaskResource */ @DELETE public void delete() { } }
この時点でtaskManagerプロジェクトを実行するとサーバーに再デプロイされる。
ブラウザでhttp://localhost:8080/taskManager/wr/task/ やhttp://localhost:8080/taskManager/wr/task/12 にアクセスすると、HTTP Status 500と共にjava.lang.UnsupportedOperationExceptionが発生したことを示すメッセージが返される。
これでアプリの外枠が固まったので、内部処理の実装に移る。