top / index / prev / next / target / source
日記形式でつづる いがぴょんコラム ウェブページです。
Java+Maven で Jersey を使って REST/JSON 軽量サーバーを作る シンプルサンプルです。 単純な Java の main から起動可能な REST/JSON サーバーが出来上がります。
まず、2017-01-02 diary: [Maven] によるシンプル Java プロジェクトサンプルの作成手順 または同等の手順で Maven の Java プロジェクトを作成したことを前提とします。
次に Jersey 及び Jackson のライブラリ依存関係を Maven の記述ファイルである pom.xml に追記します。 <dependencies>
の箇所に 必要になるライブラリを追記します。
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-jdk-http</artifactId>
<version>2.24</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>2.24</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.8.6</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.6</version>
</dependency>
</dependencies>
mvn compile
を実行して pom.xml
ファイル変更結果として得られるライブラリをダウンロードします。
mvn compile
次に Java ソースコードを以下のように書き変えます。
package my.sandbox;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.core.UriBuilder;
import org.glassfish.jersey.jdkhttp.JdkHttpServerFactory;
import org.glassfish.jersey.server.ResourceConfig;
import com.fasterxml.jackson.databind.ObjectMapper;
public class App {
public static void main(final String[] args) {
final URI uri = UriBuilder.fromUri("http://localhost/").port(8080).build();
final ResourceConfig config = new ResourceConfig();
config.register(Hello.class);
JdkHttpServerFactory.createHttpServer(uri, config);
for (;;) {
System.out.print('.');
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
}
}
}
@Path("/")
public static class Hello {
// http://localhost:8080/person?name=Taro&age=54
@Path("person")
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response person(@QueryParam("name") @DefaultValue("TaroYamada") String name,
@QueryParam("age") @DefaultValue("17") int age) {
Person person = new Person();
{
person.age = age;
person.name = name;
Job job = new Job();
job.title = "leader";
person.jobs.add(job);
}
try {
return Response.ok(new ObjectMapper().writeValueAsString(person), MediaType.APPLICATION_JSON).build();
} catch (Exception ex) {
ex.printStackTrace();
} catch (Error ex) {
ex.printStackTrace();
}
return Response.status(Status.BAD_REQUEST).build();
}
}
static class Person {
public int age;
public String name;
public List<Job> jobs = new ArrayList<Job>();
}
static class Job {
public String title;
}
}
これをコンパイルして実行すると、REST/JSON な web サーバーをすぐさま実行することができます。
mvn compile
mvn exec:java
以下のような URL で接続確認を行うことができます。
http://localhost:8080/person?name=Taro&age=54
GlassFish の中に含まれる Jersey のみを利用して REST サーバーを作ることができるこの手順は、とても便利で軽量です。
Last modified: $Date: 2017-02-22 $