充分利用网络运行时类信息?像javap的,但在对类运行时加载到内存中
题
我在使用WebSphere的工作和复杂的类加载的问题。我希望能够以通常会得到由javap的印刷下载或打印信息(方法等)。
我还可能需要获得原始二进制类数据,来执行二进制差异。
你会怎么做呢?
解决方案
您可以编写一个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编码类文件转换成字符串(如基地64)作为字节[]不支持,但我不知道这一点,其余的将是相同的。)
如果这将在生产中被部署某种形式的认证应配置。
不隶属于 StackOverflow