充分利用网络运行时类信息?像javap的,但在对类运行时加载到内存中

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

  •  22-09-2019
  •  | 
  •  

我在使用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)作为字节[]不支持,但我不知道这一点,其余的将是相同的。)

如果这将在生产中被部署某种形式的认证应配置。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top