1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Jetty Maven Pluginで起動したNablarchのWebアプリケーションをデバッグする

Posted at

What's?

Nablarch 6では、ローカルでWebアプリケーションを動かす用途としてJetty 12を使用しています。

具体的にはJetty Maven Pluginを使い、jetty:runで起動します。

Nablarch 5まではWAITTを使用していましたが、その切り替え方法はこちらです。

Nablarch 5から6への移行ガイド / 移行手順の詳細 / Jakarta EE対応 / waitt-maven-pluginをjetty-ee10-maven-pluginに変更する

今回はJetty Maven Pluginで起動したNablarchのWebアプリケーションのデバッグ方法をメモしておきます。

mvnDebug

Apache MavenにはmvnDebugというコマンドが付属しています。

実体としてはこちらで、環境変数MAVEN_OPTS-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000を追加したものです。

mvnDebug
MAVEN_DEBUG_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=${MAVEN_DEBUG_ADDRESS:-8000}"

echo Preparing to execute Maven in debug mode

env MAVEN_OPTS="$MAVEN_OPTS" MAVEN_DEBUG_OPTS="$MAVEN_DEBUG_OPTS" "`dirname "$0"`/mvn" "$@"

このコマンド経由でjetty:runを起動することで、プロセスにアタッチしてデバッグすることができます。

なので、実際にはNablarch固有の方法ではなくこの手のMavenプラグインのデバッグにも応用できる話ではあります。

Jetty Maven Plugin

Jetty Maven Pluginのデフォルトのデプロイメントモード(deployMode)はEMBEDです。

Using the Jetty Maven Plugin / Deployment Modes

このため、mvnDebugで有効にしたMAVEN_OPTSの内容がそのまま作用します。

deployModeFORKにした場合はjvmArgsでの設定になると思います。

環境

今回の環境はこちらです。

$ java --version
openjdk 17.0.12 2024-07-16
OpenJDK Runtime Environment (build 17.0.12+7-Ubuntu-1ubuntu222.04)
OpenJDK 64-Bit Server VM (build 17.0.12+7-Ubuntu-1ubuntu222.04, mixed mode, sharing)


$ mvn --version
Apache Maven 3.9.9 (8e8579a9e76f7d015ee5ec7bfcdc97d260186937)
Maven home: /home/charon/.sdkman/candidates/maven/3.9.9
Java version: 17.0.12, vendor: Ubuntu, runtime: /usr/lib/jvm/java-17-openjdk-amd64
Default locale: ja_JP, platform encoding: UTF-8
OS name: "linux", version: "5.15.0-124-generic", arch: "amd64", family: "unix"

また、デバッグにはIntelliJ IDEA Community Editionを使用します。

Nablarchのブランクプロジェクトを作成する

確認用のブランクプロジェクト作成します。

今回は、RESTfulウェブサービスを使うことにします。

ブランクプロジェクトの作成。

$ mvn archetype:generate \
  -DinteractiveMode=false \
  -DarchetypeGroupId=com.nablarch.archetype \
  -DarchetypeArtifactId=nablarch-jaxrs-archetype \
  -DarchetypeVersion=6u2 \
  -DgroupId=com.example \
  -DartifactId=hello-nablarch-jaxrs \
  -Dversion=0.0.1 \
  -Dpackage=com.example

プロジェクト内に移動。

$ cd hello-nablarch-jaxrs

まずは通常どおりJettyを起動して動作確認。

$ mvn jetty:run
$ curl localhost:9080/find/json
[{"userId":1,"kanjiName":"名部楽太郎","kanaName":"なぶらくたろう"},{"userId":2,"kanjiName":"名部楽次郎","kanaName":"なぶらくじろう"}]

mvnDebugを使ってデバッグする

では、今度はmvnDebugjetty:runを起動します。

$ mvnDebug jetty:run

起動するとアタッチ待ちになるので

Preparing to execute Maven in debug mode
Listening for transport dt_socket at address: 8000

プロセスにアタッチします。

image.png

対象はポート番号が表示されているものなりますね。

image.png

アタッチすると停止していたMavenプロセスが動き出すので、あとはブレークポイントをつけるなりしてデバッグします。

image.png

Mavenがアタッチ待ちになるのが嫌だという場合は、suspendnにしてあとからアタッチすればよいでしょう。

$ MAVEN_OPTS='-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000' mvn jetty:run
1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?