t-fjkの日記

日々の気になったことを適当に。ネタは Windows/Android アプリとか。これからサーバサイド系の話が増えていく予感。

Mac + Eclipse + Tomcat でWEBアプリ開発のための準備3 - Jersey ライブラリの追加 -

作ろうと思っているのは REST な サービスなので
Java の RESTful の仕様 JAX-RS の実装である Jersey を使うことにする。

http://jersey.java.net/

ここのダウンロードページから、

  • jersey-server.jar
  • jersey-core.jar
  • asm.jar

Servlet で必要な

を落としてくる。

これらを WEB-INF/lib の中にコピーして、Build path に追加する。

f:id:t-fjk:20130103160834p:plain

さらに WEB-INF の中に web.xml というファイルを追加する。

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
	<display-name>jaxrsexample</display-name>
	<servlet>
		<servlet-name>Jersey</servlet-name>
		<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>Jersey</servlet-name>
		<url-pattern>/*</url-pattern>
	</servlet-mapping>
</web-app>

web.xml の中で jersey を使いますよってのを宣言する。

マッピングでは /* (すべてのURIに対して有効)にしたので
これでこのサーブレットでは jersey が動く。

ここにクラスを追加。

SampleService.java

package com.test.JerseySample;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("/Hello")
public class SampleService {
	@GET
	@Produces(MediaType.TEXT_PLAIN)
	public String sayHello() {
		return "HelloWorld";
	}
}

@path が @WebServlet に相当、

@GET が doGet メソッドの代わり、

@Produces でレスポンスのフォーマットを指定する。

#json や xml も同様に指定できるらしい。