本文へスキップ

Java Helper

Java Helperはアプリケーションのライブラリを自動で分析し、最適なweaving設定を生成するCLIツールです。Javaアプリケーションで使用するフレームワークやオープンソースライブラリをWhaTapエージェントが追跡するには、weaving設定が必要です。Java Helperはエージェントパッケージにwhatap.javahelper.jarとして含まれており、JDK 8以上で動作します。

weavingオプションを直接指定するには、手動設定文書を参照してください。

サポートフォーマット

JAR、Spring Boot Fat JAR、Maven Shade JAR、WARフォーマットをサポートします。EARはルートレベルのJARモジュールまで分析します。

Java Helperコマンド

java -jar whatap.javahelper.jar conf generate <入力> [オプション]

入力

InputDescriptionExample
<JARパス>JARファイルを直接指定して分析/app/myapp.jar
--pid <PID>実行中のJavaプロセスのPIDで分析--pid 12345

JARパスと--pidのいずれかを必ず指定してください。

Options

OptionDescriptionDefault
-o <ファイル>マッチング結果をwhatap.confファイルに保存未指定時は画面出力のみ
-v分析過程の詳細ログを出力 (verbose)off

使用シナリオ

新規エージェントインストール

JARファイルパスを指定してwhatap.confを直接作成します。

java -jar whatap.javahelper.jar conf generate /app/myapp.jar -o whatap.conf

生成されたwhatap.confの例:

whatap.conf
weaving=spring-boot-3.2,tomcat10,mongodb-4.8

# 推奨モジュール(必要に応じてコメント解除)
#weaving+=,reactor-kafka-1.3
#weaving+=,resilience4j

作成したファイルにライセンスキーとサーバー情報を追加すればインストールが完了します。

運用中の設定点検

実行中のプロセスをPIDで分析してマッチング結果を確認します。

java -jar whatap.javahelper.jar conf generate --pid 12345

出力例:

==========================================
WhaTap Weaving Module マッチング結果
==========================================

検出されたライブラリ: 25個
マッチしたモジュール: 8個
バージョン不一致: 1個
自動含有: 3個

LIBRARY VERSION WEAVING MODULE STATUS
spring-boot 3.2.5 spring-boot-3.2 MATCHED
mongodb-driver-sync 4.11.1 mongodb-4.8 MATCHED
lettuce-core 6.3.2 lettuce-6.1 AUTO
...

現在のwhatap.confと比較して不足しているモジュールがないか確認できます。設定ファイルに保存するには-oオプションを追加してください。

ライブラリアップグレード後

Spring Bootのバージョンアップグレードなどライブラリ変更時、アップグレードしたJARで再分析すると新しいweaving設定を取得できます。

java -jar whatap.javahelper.jar conf generate /app/myapp-upgraded.jar

マッチング状態

StatusDescriptionAction
MATCHEDartifactId、groupId、versionがすべて一致し、weavingモジュール適用可能自動適用
AUTO自動含有対象モジュール(weaving設定なしでデフォルト適用)自動適用
VERSION_MISMATCHライブラリは検出されたがバージョンがweavingモジュールのサポート範囲外エージェントアップデート確認
NO_MATCHweavingレジストリに該当するモジュールなし該当なし

参考

依存性分析方式

JARファイルからライブラリバージョンを確認する過程は3段階の優先順位で動作します。上位段階で抽出した情報は下位段階で上書きされません。

  1. Maven pom.properties: JAR内部のMETA-INF/maven/{groupId}/{artifactId}/pom.propertiesからgroupIdartifactIdversionを抽出します。最も正確な方法です。

  2. MANIFEST.MF: pom.propertiesがない場合、META-INF/MANIFEST.MFからImplementation-TitleImplementation-Versionなどの標準属性を読み取ります。

  3. ファイル名パーシング: 上記2つの方法が失敗した場合、JARファイル名から推論します。(例: jackson-databind-2.14.0.jarversion="2.14.0"