概要
jersey
とは簡単に言うとjava
でREST-APIが作れるライブラリです。
jersey
はjax-rs
という仕様に基づいて実装された参照実装のひとつです。
下記にeclipse
, maven
を使用してjersey(jax-rs)
を使用したアプリを最小構成で作る手順を記載します。
検証環境
- java 17
- eclipse 2022-12
- tomcat 10
- maven 3.8.7
プロジェクト作成
-
ウインドウ
,設定
,Java
,インストール済みのjre
,追加
,標準VM
-
ファイル
,新規
,動的Webプロジェクト
ソースコード
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>SampleJersey</groupId>
<artifactId>SampleJersey</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<jersey.version>3.1.1</jersey.version>
</properties>
<build>
<finalName>SampleJersey</finalName>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.10.1</version>
<configuration>
<source>17</source>
<target>17</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.2</version>
</plugin>
</plugins>
</build>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.glassfish.jersey</groupId>
<artifactId>jersey-bom</artifactId>
<version>${jersey.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.inject</groupId>
<artifactId>jersey-hk2</artifactId>
</dependency>
</dependencies>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="https://jakarta.ee/xml/ns/jakartaee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="5.0">
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
package sampleapi;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;
@Path("")
public class SampleApi {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getIt() {
return "Got it!!!";
}
}
コンパイル
-
今回は
maven
コマンドからコンパイルを行います。- 参考
- Linux 環境に Maven コマンドインストール
https://weblabo.oscasierra.net/install-maven-35-centos7/
- Linux 環境に Maven コマンドインストール
- 参考
-
あとはプロジェクトの
pom.xml
が存在するフォルダに移動して下記コマンドを実行$ maven clean package
-
コンパイルに成功すると
target
ディレクトリ配下にSampleJersey.war
が生成されます。
疎通確認
-
今回はコンパイルされたwarをdocker版tomcatで動作確認します。
dockerがインストールされた環境が必要です。 -
tomcatコンテナ起動
SampleJersey.war
のあるディレクトリをコンテナ内のwebapps
にマウントして起動します。
実行前にSampleJersey.war
が/root/java/SampleJersey/targetにあることを確認しておきます。docker run -itd --rm --name tomcat -p 8080:8080 -v /root/java/SampleJersey/target:/usr/local/tomcat/webapps tomcat:10-jdk17
-
接続
curl http://localhost:8080/SampleJersey/
SampleApi.java
に記載した値Got it!!!
が返ってくれば成功です。