0

私の問題の根本は、JBossAS7にデプロイされたWebアプリケーションからSizeOfsourceforgeプロジェクトClassNotFoundExceptionを使用しようとしていて、 forを取得しようとしていることですnet.sourceforge.sizeof.SizeOf。サーバーに追加-javaagent:/path_to_jar/SizeOf.jarし、サーバーの起動時にpremainメソッドからJAVA_OPTSを確認しSystem.out.printlnました(JAVAGENT:クラスSizeOfのpremainインストルメンテーションを呼び出します)。SizeOf.sizeOf(obj)ただし、サーブレットのdoGetメソッドから呼び出そうとすると、アプリケーションは前述ので失敗しますClassNotFoundException

誰かがこれをJBossAS7で動作させる方法を教えてくれるなら、それは役に立ちます(Eclipseの実行構成で動作させます-コマンドラインから実行するのと同じです)。それ以上に、私が本当にやりたいのは、Javaエージェントのクラスローディングがどのように機能するかを理解することです。私が見つけた最高のドキュメントは、公式のJVMドキュメントにあり、それはかなりまばらです。クラスローディングについては、Premain-Classがシステムクラスローダーによってロードされるということだけです。-javaagent JVM引数がそれを処理するため、jarをクラスパスに配置する必要がないことを示唆するブログ投稿を見ました。したがって、SizeOfjarをとして追加する必要はないようです。 AS7モジュール。私は何かが足りないのですか?

4

1 に答える 1

2

次のことを行う必要があります。

  • エージェント用のモジュールを作成します。フォルダーmodules/net / sourceforge / sizeof / mainを作成し、sizeof.jarとmodule.xmlを追加します。
  • ブート設定にモジュールを追加します:bin/standalone.confにJBOSS_MODULES_SYSTEM_PKGS="net.sourceforge.sizeof"を追加します
  • また、bin / Standalone.confで、-javaageent:../ modules / net / sourceforge / sizeof / main/sizeof.jarをJAVA_OPTSに追加します。
于 2012-09-13T01:40:04.917 に答える