2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

最小構成のjerseyプログラムを作成する

Last updated at Posted at 2023-03-29

概要

jerseyとは簡単に言うとjavaでREST-APIが作れるライブラリです。
jerseyjax-rsという仕様に基づいて実装された参照実装のひとつです。

下記にeclipse, mavenを使用してjersey(jax-rs)を使用したアプリを最小構成で作る手順を記載します。

検証環境

  • java 17
  • eclipse 2022-12
  • tomcat 10
  • maven 3.8.7

プロジェクト作成

  • ウインドウ, 設定, Java, インストール済みのjre, 追加, 標準VM

    • openjdk17を指定
      image.png
  • ファイル, 新規, 動的Webプロジェクト

    • プロジェクト名SampleJerseyを指定

    • 構成, 変更

      • Java 17を指定
      • dynamic web module version 5.0を指定
        image.png
        image.png
    • 次へ

      • デフォルト出力フォルダーtargetに指定
        image.png
    • 次へ

      • web.xmlデプロイメント記述子の生成にチェック
        image.png
  • プロジェクトを右クリック
    構成, Mavenプロジェクトへ変換
    image.png

ソースコード

下記のようなファイル構成でソースを配置します。
image.png

pom.xml
<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>

web.xml
<?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>
SampleApi.java
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コマンドからコンパイルを行います。

  • あとはプロジェクトの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!!!が返ってくれば成功です。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?