我正在使用Websphere和复杂的类加载问题。我希望能够下载或打印通常由javap打印的信息(方法等)。
我可能还需要获取原始二进制类数据,以执行二进制差异。
你会怎么做?
答案 0 :(得分:1)
您可以编写一个Servlet或JMX MBean,将该类公开给您的客户端。
的Servlet
String resourceParameter = ...;
OutputStream out = ...:
InputStream input = Thread.currentThread().getContextClassLoader()
.getResourceAsStream(resourceParameter)
write(input, out);
客户端:
GET http://host/DiagnosticServlet?resource=your/ClassName.class
资源参数必须是您的类文件 your.ClassName - >你/ ClassName.class。 然后,您可以保存文件并使用javap。
(我认为MBean必须将您的类文件编码为字符串(例如Base 64),因为不支持byte []。但我不确定。其余的将是相同的。)
如果要在生产中部署,则应配置某种形式的身份验证。