Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从web获取运行时类信息?类似于javap,但在运行时加载到内存中的类_Java_Dynamic_Javap - Fatal编程技术网

从web获取运行时类信息?类似于javap,但在运行时加载到内存中的类

从web获取运行时类信息?类似于javap,但在运行时加载到内存中的类,java,dynamic,javap,Java,Dynamic,Javap,我正在处理Websphere和复杂的类加载问题。我希望能够下载或打印通常由javap打印的信息(方法等) 我可能还需要获取原始二进制类数据,以执行二进制差异 您将如何做到这一点?您可以编写一个Servlet或JMX MBean,向您的客户机公开该类 Servlet: String resourceParameter = ...; OutputStream out = ...: InputStream input = Thread.currentThread().getContextClassLo

我正在处理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->your/ClassName.class。 然后可以保存文件并使用javap

(我认为MBean必须将您的类文件编码为字符串(例如Base 64),因为字节[]不受支持。但我不确定这一点。其余的都一样。)


如果将在生产环境中部署该类,则应配置某种形式的身份验证。

您可以编写一个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->your/ClassName.class。 然后可以保存文件并使用javap

(我认为MBean必须将您的类文件编码为字符串(例如Base 64),因为字节[]不受支持。但我不确定这一点。其余的都一样。)


如果将在生产环境中部署,则应配置某种形式的身份验证。

有一些内置的类加载器诊断,可以通过控制台访问。它们有用吗?反射API(obj.getClass().getDeclaredMethods()和friends)应该能够为您提供所需的大部分内容。有一些内置的类加载器诊断,可以通过控制台访问。它们有用吗?反射API(obj.getClass().getDeclaredMethods()和friends)应该能够满足您的大部分需求。