JAX-RS(Jersey)での実装に関して

前回は、XMLから自動生成することに書いたので、今度は、実際の実装に関して書きたいと思います。
Jerseyは、URLをアノテーションでマッピングします。
1つのJavaクラスを複数のURLへマッピングできます。
例えば、下記のURLサービスにアクセスするとします。

http://localhost/MessageResource_1_0/MessageResource/service/getMessageByMessageId?messageId=100

その場合、
「/service」は、クラス自体に対してのマッピングなので、下記の様にクラスに@Path("service")と、アノテーションで記述します。

@Path("service")
public class MessageResource {
}

「/getMessageByMessageId」は、メソッドに対してのマッピングなので、下記の様に@Path(value="getMessageByMessageId")と、アノテーションで記述します。

@Path(value="/getMessageByMessageId")
public MessageResponse getMessageByMessageId() {
}

また、GETかPOSTでのリクエストかをメソッドに対して@GETや@POSTなどアノテーションで記述することもできます。
GETの場合は、下記の様に@GETをメソッドに対して記述します。

@GET
@Path(value="/getMessageByMessageId")
public MessageResponse getMessageByMessageId() {
}

レスポンスの形式に関してもアノテーションで記述することになります。
XML形式の場合は、下記の様に記述します。

@GET
@Path(value="/getMessageByMessageId")
@Produces(MediaType.TEXT_XML)
public MessageResponse getMessageByMessageId() {
}

受け取るパラメータもアノテーションで、記述することができます。
@QueryParam("messageId")String messageIdと言った感じで下記の様に記述することができます。

@GET
@Path(value="/getMessageByMessageId")
@Produces(MediaType.TEXT_XML)
public MessageResponse getMessageByMessageId(@QueryParam("messageId") String messageId) {
}

最終的には、下記の様なクラスの実装になります。

package jp.co.dev.system.service;

import javax.ws.rs.Get;
import javax.ws.rs.Path;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

@Path("/service")
public class MessageResoruce {
   @GET
   @Path(value="/getMessageByMessageId")
   @Produces(MediaType.TEXT_XML)
   public MessageResponse getMessageByMessageId(
                                  @QueryParam("messageId") String messageId)
                                                  throws ApplicationFaultException,SystemFaultException {
            MessageResponse response = null;
            // 何らかの処理を記述。
            retrun response;
   }
}

最後に、web.xmlファイルにJerseyの設定を行います。
サーブレットの設定と、初期パラメータとして、公開するサービスのクラスがあるパッケージを指定すれば設定は完了です。

<servlet>
  <servlet-name>Jersey REST Service</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
  <init-param>
    <param-name>com.sun.jersey.config.property.packages</param-name>
    <param-value>jp.co.dev.system.service</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
  <servlet-name>Jersey REST Service</servlet-name>
  <url-pattern>/MessageResource/*</url-pattern>
</servlet-mapping>