Получение информации класса выполнения в Интернете? Что -то вроде Javap, но во время выполнения в классе загружено в памяти

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

  •  22-09-2019
  •  | 
  •  

Вопрос

Я работаю с Websphere и сложными проблемами загрузки класса. Я хочу иметь возможность загружать или распечатать информацию, которая обычно печатается Javap (методы и т. Д.).

Мне также может потребоваться получить необработанные данные двоичного класса, чтобы выполнить бинарную дифференциацию.

Как бы вы это сделали?

Это было полезно?

Решение

Вы могли бы написать сервлет или JMX MBEN, который выявляет класс вашему клиенту.

Сводлет:

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

Клиент:

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

Параметр ресурса должен быть вашим Файл класса your.classname -> your/classname.class. Затем вы можете сохранить файл и использовать Javap.

(Я думаю, что MBEN должен кодировать ваш файл класса в строку (например, база 64), поскольку байт [] не поддерживается. Но я не уверен в этом. Остальное будет таким же.)

Если это будет развернуто в производстве, должна быть настроена какая -то форма аутентификации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top