alibaba / alibaba/one-java-agent

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

Ouverte
#2 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
Java
Étoiles
579
Forks
128
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

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

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Piste de recherche

Commencez par retracer la manière dont le Java Agent est lancé dans premain et agentmain, puis examinez les limites proposées dans l’issue entre wrapper, agent core et plugin ClassLoader. L’issue ne nomme aucun fichier source, test ou point d’entrée ; identifiez donc d’abord ces zones et clarifiez si le rechargement dynamique est requis avant l’implémentation. Le travail sera considéré comme terminé lorsqu’une conception du chargement aura été convenue et que le comportement de chargement des classes aura été documenté.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
java
Domaine
devtools
Type d'issue
Fonctionnalité
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
À l'abandon
Clarté
À clarifier
Accessibilité débutants
20/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.