3
1

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 3 years have passed since last update.

VSCodeでJersey開発環境を爆速で作る(Windows10)

3
Last updated at Posted at 2021-06-30

はじめに

Javaの開発からしばらく遠のいていたけども、触る機会があったのでREST API(Jerseyによる実装)を開発する環境を整えようと調べていたら、昔と今で開発環境の作り方が全然違ったので備忘録として手順を残す。結論から言うと、ローカルにJavaやTomcatをインストールする必要なく、開発環境を構築できる...。JDKやTomcatのバージョン修正なんかも1行書き換えるだけですぐ実行できてしまう...。すごいね。

手順

Docker Desktopインストール

こちらからダウンロードし、インストール。
https://www.docker.com/products/docker-desktop
これがないと始まらないので、使えない場合はごめんなさい。

VSCodeプラグインインストール

VSCodeで次の4つのプラグインをインストールする。

  1. Language Support for Java(TM) by Red Hat
  2. Java Extension Pack
  3. Tomcat for Java
  4. Remote Development

mavenコンテナを立ち上げる

プロジェクト用のフォルダを作成し、そのフォルダでVSCodeを開く。
VSCode左下のリモートツールアイコンをクリックし、「Open Folder in Container」を選択。

どのフォルダをコンテナに接続するか聞いてくるので、そのまま「Open」ボタンを押す。

「Java」を選択。

11 or 16を聞いてくるので、「11」を選択。

「Maven」にチェックし、「OK」ボタンをクリック。

コンテナが起動される。

コンテナの起動が完了すると、このような状態となる。

Jersey2インストール

次に、Jerseyをインストールする。次のページを参考に、mvnコマンドを実行する。
https://eclipse-ee4j.github.io/jersey/download.html

mvn archetype:generate -DarchetypeGroupId=org.glassfish.jersey.archetypes \
    -DarchetypeArtifactId=jersey-quickstart-webapp -DarchetypeVersion=2.34

ターミナルを立ち上げ、上記コマンドを実行する。

インストールが進むと、groupId、artifactId、version、packageを聞いてくるので、環境に合わせて入力する。

入力例

項目
groupId com.example
artifactId jersey-sample
version 1.0-SNAPSHOT
package com.example

インストール完了。

この時点で、次のようなファイルが生成されている。

jersey-sample
│  pom.xml
│  tree.txt
│
└─src
    └─main
        ├─java
        │  └─com
        │      └─example
        │              MyResource.java
        │              
        ├─resources
        └─webapp
            │  index.jsp
            │  
            └─WEB-INF
                    web.xml

ここで一旦VSCodeを終了する。

tomcatコンテナ用の設定ファイルを作成する。

次の3つのファイルを作成する。

  • .devcontainer/devcontainer.json
  • .devcontainer/Dockerfile
  • .vscode/settings.json
jersey-sample
│  pom.xml
│  tree.txt
│  
├─.devcontainer
│      devcontainer.json
│      Dockerfile
│      
├─.vscode
│      settings.json
│      
└─src
    └─main
        ├─java
        │  └─com
        │      └─example
        │              MyResource.java
        │              
        ├─resources
        └─webapp
            │  index.jsp
            │  
            └─WEB-INF
                    web.xml
 .devcontainer/devcontainer.json
{
  "name": "tomcat",
  "dockerFile": "Dockerfile",
  "forwardPorts": [
    8080
  ],
  "workspaceFolder": "/opt/project",
  "mounts": [
    "source=${localWorkspaceFolder},target=/opt/project,type=bind,consistency=cached"
  ],
  "extensions": [
    "adashen.vscode-tomcat",
    "vscjava.vscode-java-pack"
  ]
}
 .devcontainer/Dockerfile
FROM tomcat:jdk11-adoptopenjdk-hotspot

RUN mkdir /opt/project

RUN apt-get update && \
    apt-get -y install maven

DockerfileはJDK8のコンテナでも問題ないが、JDK8だとhotCodeReplaceが利用できない。
上記はtomcat9だが、Jersey3を動かしたい場合はtomcat10でなければ動かない。
JDK8の場合:FROM tomcat:8.5.49-jdk8-openjdk
Jersey3の場合:FROM tomcat:10.0.7-jdk11-adoptopenjdk-hotspot

 .vscode/settings.json
{
  "java.debug.settings.hotCodeReplace": "auto",
  "java.home": "/opt/java/openjdk",
  "java.configuration.updateBuildConfiguration": "automatic"
}

/opt/java/openjdk はコンテナ側のJDKインストールフォルダ

VSCode起動→コンテナ起動

上記までの手順で作成された「jersey-sample」フォルダでVSCodeを開き、リモートツールアイコンから「Open Folder in Container」を選択。

どのフォルダをコンテナに接続するか聞いてくるので、そのまま「Open」ボタンを押す。

コンテナが起動される。

Tomcatサーバ追加

画面左下の「TOMCAT SERVERS」にカーソルを合わせると「+」ボタンが表示されるので、クリックし、「/usr/local/tomcat/」を入力する。
この/usr/local/tomcat/はコンテナ側のフォルダ。

Tomcatが登録されるので、右クリックし「Start」を選択する。

pom.xml修正

現状ビルドすると警告が出るので、pom.xmlを開いてsourceおよびtargetのJDKバージョンを「1.8」から「11」に修正する。

同様にpom.xmlの「org.glassfish.jersey.media」がコメントアウトされているので、コメントを削除する。これをやらないとJsonObjectなどが利用できない。

warファイル作成

ターミナルを開き、次のコマンドを実行する。

mvn package

warファイル配備

コマンドが完了すると、targetフォルダ配下にwarファイルができているので、右クリックし、「Debug on Tomcat Server」を選択する。

ブラウザを開き、http://localhost:8080/jersey-sample/webapi/myresource にアクセスすると、APIが動いているのを確認できる。

参考

3
1
1

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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?