JVM の初期化

JBoss EAP または JBoss Wildfly に Java エージェントをインストールするには、JVM を初期化する必要があります。次のパラメータを実行します。

JAVA_OPTS="$JAVA_OPTS -Djboss.modules.system.pkgs=org.jboss.byteman,com.singularity"

JVM を初期化しない場合、インストールで「class not found」例外が生成されます。

プロパティ jjboss.modules.system.pkgs が環境で使用可能であることを確認します。プロパティが存在する場合は、 com.singularity を追加します。

例:

-Djboss.modules.system.pkgs=org.jboss.byteman,com.singularity

このプロパティが存在しない場合は、新しいプロパティを設定します。

-Djboss.modules.system.pkgs=com.singularity

スタンドアロンモードエージェントのインストール

これらの手順は、Red Hat JBoss の使用を前提としています。サポート対象バージョンについては、「アプリケーションサーバー」を参照してください。

JBossスタンドアロンにJavaエージェントをインストールする方法:
Linux
  1. bin/standalone.sh ファイルを開く。

  2. ファイルで次の javaagent 引数を追加する。

    export JAVA_OPTS="$JAVA_OPTS -javaagent:/agent_install_dir/javaagent.jar"
  3. 引数をstandalone.shの次のセクションの上に置く

    ... while true;do if [ "x$LAUNCH_JBOSS_IN_BACKGROUND" = "X" ]; then # Execute the JVM in the foreground eval \"$JAVA\" -D\"[Standalone]\"$JAVA_OPTS \ \"-Dorg.jboss.boot.log.file=$JBOSS_LOG_DIR/boot.log\" \ \"-Dlogging.configuration=file:$JBOSS_CONFIG_DIR/logging.properties\" \ -jar \"$JBOSS_HOME/jboss-modules.jar\" \
  4. アプリケーションサーバーを再起動する。

  5. JAVA_OPTSセクションのstandalone.confファイルの最後に次を追加する。JAVA_OPTS

    -Djava.util.logging.manager=org.jboss.logmanager.LogManager -Xbootclasspath/p:{{}} <path_to_jboss_logmanager>/jboss-logmanager-<version>.jar

    JDK9 以降では、 -Xbootclasspath/p オプションは削除されました。代わりに -Xbootclasspath/a を使用してください。

    -Djava.util.logging.manager=org.jboss.logmanager.LogManager -Xbootclasspath/a: <path_to_jboss_logmanager>/jboss-logmanager-<version>.jar
  6. <path_to_jboss_logmanager><version> をシステムのパスおよびログマネージャ JAR ファイル名で置き換える。パスを動的にする方法については、「LogManager の場所を動的にする」を参照。動的な LogManager の場所

    注: ステップ 5 とステップ 6 は、ログマネージャのエラーが発生した場合にのみ必須です。また、この変更後にステップ 4 を繰り返します。
Windows
  1. standalone.shファイルで次のjavaagent引数を追加する。

    set JAVA_OPTS=%JAVA_OPTS% -javaagent:\agent_install_dir\javaagent.jar
  2. 引数を の次のセクションの上に置く。

    RESTART
    "%JAVA%" %JAVA_OPTS% ^
     "-Dorg.jboss.boot.log.file=%JBOSS_LOG_DIR%\server.log" ^
     "-Dlogging.configuration=file:%JBOSS_CONFIG_DIR%/logging.properties" ^
     -jar "%JBOSS_HOME%\jboss-modules.jar" ^
     -mp "%JBOSS_MODULEPATH%" ^
     -jaxpmodule "javax.xml.jaxp-provider" ^
     org.jboss.as.standalone ^
     "-Djboss.home.dir=%JBOSS_HOME%" ^
     %SERVER_OPTS%
  3. アプリケーションサーバーを再起動する。

  4. JAVA_OPTSセクションのstandalone.confファイルの最後に次を追加する。JAVA_OPTS

    -Djava.util.logging.manager=org.jboss.logmanager.LogManager -Xbootclasspath/p:{{}} <path_to_jboss_logmanager>/jboss-logmanager-<version>.jar

    JDK9 以降では、 -Xbootclasspath/p オプションは削除されました。代わりに -Xbootclasspath/a を使用してください。

    -Djava.util.logging.manager=org.jboss.logmanager.LogManager -Xbootclasspath/a: <path_to_jboss_logmanager>/jboss-logmanager-<version>.jar
  5. <path_to_jboss_logmanager><version> をシステムのパスおよびログマネージャ JAR ファイル名で置き換える。パスを動的にする方法については、「LogManager の場所を動的にする」を参照。動的な LogManager の場所

    注: ステップ 4 とステップ 5 は、ログマネージャのエラーが発生した場合にのみ必須です。また、この変更後にステップ 3 を繰り返します。

動的な LogManager の場所

スタンドアロン JBoss インスタンスでは、パスおよびログマネージャ JAR 名をハードコーディングするのではなく、glob パターンマッチング技術を使ってログマネージャファイルへのパスを動的にすることで、システム間の変更や差異に対する回復機能を持たせることができます。

これを実行する正確な手順は、環境によって異なります。次のセクションでは、独自の実装を開始する場合の、Windows システムと Linux システムでの構成例を示します。

Windows

Windowsの場合、standalone.conf.batにこの付加的なスニペットが追加されます。

...
rem jboss.modules.system.pkgs
set JAVA_OPTS=%JAVA_OPTS% -Djboss.modules.system.pkgs=org.jboss.byteman,com.singularity,org.jboss.logmanager

rem java.util.logging 
set JAVA_OPTS=%JAVA_OPTS% -Djava.util.logging.manager=org.jboss.logmanager.LogManager

rem bootclasspath
set LOGMANAGER= 
for /f %%i in ('dir /b "%JBOSS_HOME%\modules\system\layers\base\org\jboss\logmanager\main\jboss-logmanager-*.jar"') do ( 
   set LOGMANAGER_JAR=%JBOSS_HOME%\modules\system\layers\base\org\jboss\logmanager\main\%%i 
) 
set JAVA_OPTS=%JAVA_OPTS% -Xbootclasspath/p:%LOGMANAGER_JAR%

JBossホーム下のLogManager JARファイルへのパスはJBossのバージョンにより異なる場合があります。ご使用のシステムを確認し、それに応じて例にあるようにパスを調整します。

Linux

Linuxの場合、次のコードを使いパスを動的に追加できます。

JBOSS_MODULES_SYSTEM_PKGS ="org.jboss.byteman,com.singularity,org.jboss.logmanager"

JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.jboss.logmanager.LogManager"
JAVA_OPTS="$JAVA_OPTS -Xbootclasspath/p:$(ls ${JBOSS_HOME}/modules/system/layers/base/org/jboss/logmanager/main/jboss-logmanager-*.jar)"
        

例にあるように ${JBOSS_HOME} 変数を使用する場合、ディレクトリへの変数をご利用のシステムの JBoss インストールディレクトリに設定します。

JBossホーム下のLogManager JARファイルへのパスはJBossのバージョンにより異なる場合があります。ご使用のシステムを確認し、それに応じて例にあるようにパスを調整します。