alibaba / alibaba/one-java-agent

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

Abierto
#2 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Java
Estrellas
579
Forks
128
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Línea de trabajo

Empieza por rastrear cómo se inicia el Java Agent en premain y agentmain, y después revisa los límites propuestos en el issue entre wrapper, agent core y plugin ClassLoader. El issue no menciona archivos de código fuente, pruebas ni puntos de entrada, así que primero identifica esas áreas y aclara si se requiere recarga dinámica antes de la implementación. Se considerará terminado cuando se haya acordado un diseño de carga y se haya documentado el comportamiento de carga de clases.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
java
Área
devtools
Tipo de issue
Nueva funcionalidad
Dificultad
5/5
Tiempo estimado
Más de una semana
Estado de actividad
Estancado
Claridad
Necesita aclaración
Aptitud para principiantes
20/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.