我正在处理 Websphere 和复杂的类加载问题。我希望能够下载或打印通常由 javap 打印的信息(方法等)。
我可能还需要获取原始二进制类数据,以执行二进制差异。
你会怎么做?
您可以编写一个 Servlet 或 JMX MBean,将类公开给您的客户端。
小服务程序:
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。
(我认为 MBean 必须将您的类文件编码为字符串(例如 Base 64),因为不支持 byte[]。但我不确定。其余的都是一样的。)
如果这将在生产中部署,则应配置某种形式的身份验证。