JavaとJavaEEプログラマのブログ

JavaEEを中心にしたをソフトウェア開発についてのブログ

NetBeansを使ってWebアプリケーションを作る〜2.RESTfulな外枠をNetBeansに作らせる〜

まずはNetBeans7.2をインストール。

  • ファイル→新規プロジェクト→Maven→Webアプリケーション を選択。

  • 作成されるプロジェクトの名前と場所を確認。

  • サーバーを選択。デフォルトのGlassFishがおすすめ。

  • プロジェクトが作成されるので構成を確認する。

  • pom.xmlを確認して、コンパイル時のJavaバージョンを1.7に修正。

  • プロジェクト名を右クリック→実行 を行うと自動的に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が発生したことを示すメッセージが返される。

これでアプリの外枠が固まったので、内部処理の実装に移る。