我正在使用Websphere和复杂的类加载问题。我希望能够下载或打印通常由javap打印的信息(方法等)。从网上获取运行时类信息?类似于javap,但在运行时加载到内存中的类
我可能还需要获取原始二进制类数据来执行二进制比较。
你会如何做到这一点?
我正在使用Websphere和复杂的类加载问题。我希望能够下载或打印通常由javap打印的信息(方法等)。从网上获取运行时类信息?类似于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必须将你的类文件编码为一个字符串(例如Base 64),因为不支持byte [],但我不确定这一点,其余部分是相同的。)
如果这将在生产中部署,则应配置某种形式的身份验证。
不错,我喜欢它。 – 2009-09-09 13:45:23
有一些内置的类加载程序诊断,通过控制台访问。他们有用吗? – djna 2009-09-08 21:42:18
反射API(obj.getClass()。getDeclaredMethods()和朋友)应该能够让你得到大部分你想要的东西。 – jsight 2009-09-08 22:10:02