Obtenir des informations de classe d'exécution à partir du Web? Quelque chose comme javap, mais lors de l'exécution de la classe chargée en mémoire

StackOverflow https://stackoverflow.com/questions/1396449

  •  22-09-2019
  •  | 
  •  

Question

Je travaille avec des questions et Websphere complexes chargement de classes. Je veux être en mesure de télécharger ou d'imprimer des informations qui normalement s'imprimé par javap (méthodes, etc.).

Je peux aussi besoin d'obtenir les données de classe binaires brutes, pour effectuer une diff binaire.

Comment voulez-vous faire?

Était-ce utile?

La solution

Vous pouvez écrire un Servlet ou JMX MBean qui expose la classe à votre client.

Servlet:

String resourceParameter = ...;
OutputStream out = ...:
InputStream input = Thread.currentThread().getContextClassLoader()
   .getResourceAsStream(resourceParameter)
write(input, out);

Client:

GET http://host/DiagnosticServlet?resource=your/ClassName.class

Le paramètre de ressource doit être fichier de classe your.ClassName -> votre / NomClasse.class. Vous pouvez ensuite enregistrer le fichier et utiliser javap.

(je pense que le MBean doit encoder votre fichier de classe dans une chaîne (par exemple, la base 64) comme octet [] n'est pas pris en charge. Mais je ne suis pas sûr. Le reste serait le même.)

Si cela sera déployé dans la production d'une forme d'authentification doit être configurée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top