alibaba / alibaba/one-java-agent

One Java Agent本身是否支持重新加载

Aperta
#2 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Java
Stelle
579
Fork
128
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

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,它自身不考虑可以更新?

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Direzione di ricerca

Inizia tracciando come viene avviato il Java Agent in premain e agentmain, quindi esamina i confini proposti nell’issue tra wrapper, agent core e plugin ClassLoader. Nell’issue non sono indicati file sorgente, test o punti di ingresso, quindi individua prima queste aree e chiarisci se il ricaricamento dinamico è richiesto prima dell’implementazione. Il lavoro sarà considerato completato quando sarà concordato un design di caricamento e sarà documentato il comportamento del caricamento delle classi.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
java
Ambito
devtools
Tipo di issue
Funzionalità
Difficoltà
5/5
Tempo stimato
Più di una settimana
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
20/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.