alibaba / alibaba/one-java-agent
One Java Agent本身是否支持重新加载
- 主要言語
- Java
- スター
- 579
- フォーク
- 128
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
One Java Agent本身是一个Java Agent,它要支持两种Java Agent的工作方式:
* premain
* agentmain
但如果按普通的方式实现,java agent jar会被加到 SystemClassLoader里,那么这个Agent本身是没办法实现更新的。
如果要支持动态更新,那么就要像arthas那样,再包装一层,引用一个自定义的ClassLoader,再来启动。
但这样子会带来复杂性:
1. Agent wrapper这一层代码,它本身是要有日志输出到哪/怎么加载配置项等问题的
1. Agent core这一层,它能否加载到SystemClassLoader的类?
1. plugin 的ClassLoader,它的parent是否应该是 Agent core的ClassLoader?
1. plugin 里的代码,能否加载到 SystemClassLoader里的类?
---
考虑到复杂性,是否简单起见,One Java Agent本身即一个传统的Java Agent,它自身不考虑可以更新?
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
調査の方向性
まず、Java Agent が premain と agentmain でどのように起動されるかを追跡し、次に issue で提案されている wrapper、agent core、plugin ClassLoader の境界を確認してください。issue にはソースファイル、テスト、エントリーポイントが示されていないため、最初にそれらの領域を特定し、実装前に動的な再読み込みが必要かどうかを明確にしてください。合意されたローディング設計があり、クラスのロード動作が文書化されていれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- java
- 領域
- devtools
- issue の種類
- 機能追加
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 活発さ
- 停滞
- 明瞭さ
- 説明が足りない
- 初心者へのやさしさ
- 20/100