JAX-RSを使う

JavaEE6でJAX-RSを使う手順のメモ。

JAX-RSで処理するパスのルートを設定

具体的にはjavax.ws.rs.core.Applicationクラスを継承したクラスを作りjavax.ws.rs.ApplicationPathアノテーションを付けます。
以下サンプル。

/**
 * 
 */
package sandbox.resource;

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;

/**
 * @author jabaraster
 */
@ApplicationPath("rest")
public class Resources extends Application {
    //
}

リソースクラスを作る

リソースクラスはjavax.ws.rs.Pathアノテーションを付けるだけです。特に何かのクラスを継承する必要はありません。
またリソースクラスの中でEJBを使う場合はリソースクラス自身にjavax.ejb.Statelessを付けておきます。

あとは必要なメソッドを作っていきます。
以下サンプル。

/**
 * 
 */
package sandbox.resource;

import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.ws.rs.Consumes;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

import sandbox.dao.EmployeeDao;
import sandbox.entity.Employee;
import sandbox.entity.EmployeeList;

/**
 * @author jabaraster
 */
@Path("emp")
@Stateless
public class EmployeeResource {

    @EJB
    EmployeeDao employeeDao;

    /**
     * @param pOffset
     * @param pLimit
     * @return
     */
    @GET
    @Path("")
    @Produces({ MediaType.TEXT_XML, MediaType.APPLICATION_JSON })
    public EmployeeList getAll( //
            @QueryParam("offset") @DefaultValue("0") final int pOffset //
            , @QueryParam("limit") @DefaultValue("5") final int pLimit //
    ) {
        return new EmployeeList(this.employeeDao.getAll(pOffset, pLimit));
    }

    /**
     * @param pEmployee
     * @return
     */
    @POST
    @Path("")
    @Produces({ MediaType.TEXT_XML, MediaType.APPLICATION_JSON })
    @Consumes({ MediaType.TEXT_XML, MediaType.APPLICATION_JSON })
    public Employee insert(final Employee pEmployee) {
        this.employeeDao.insert(pEmployee);
        return pEmployee;
    }
}

これだけ。
かんたん。