1

byte-buddy エージェントは、「新しいメソッド定義」、「静的変数の変更」などの Attach API の制限を克服できますか? メソッドが Agent Builder から呼び出されていることはわかりますがredefineClasses、これもアタッチ API と同じ制限に従っているかどうかはわかりません。

次のことができるかどうかを理解しようとしています。

1) などのアプリケーション クラス ローダーを使用してエージェント jar をロードしますParallelWebappClassLoader。私のアプリケーションはサーブレット webapp であり、実行時に上記のクラスローダーを使用してすべてのアプリケーション クラスをロードします。

2)クラスを完全に再定義します。つまり、メソッドの追加/更新と静的/ローカル変数の変更/更新/追加です。

現在、Attach API の制限内で動作するエージェントがありますが、システム クラス ローダーからアプリケーションへのクラスの読み込みを委任するのに苦労しています。

どうもありがとう、

4

1 に答える 1

1

これは、実行している Java 仮想マシンの制限です。Byte Buddy は API を使用してクラスを「完全に再定義」できますが、ほとんどの VM はそのような変更を拒否します。このような変更を適用できる動的コード進化 VMをご覧ください。

于 2018-01-09T11:27:24.510 に答える