我们的 JavaEE 应用程序有一个服务,负责根据数据库中存储的配置安装和启动其他服务。服务是使用
安装的ServiceControllerMBean.install(
org.w3c.dom.Element element,
javax.management.ObjectName objectName)
方法。此方法需要类加载器 ObjectName 作为第二个参数。在 JBoss 4.x 下,我们使用以下 hack 来获取类加载器名称:
final ServiceControllerMBean serviceController =
(ServiceControllerMBean) MBeanProxy.get(
ServiceControllerMBean.class,
ServiceControllerMBean.OBJECT_NAME, server);
final ClassLoader = serviceController.getClass().getClassLoader();
final ObjectName loader = new ObjectName(
"jmx.loading:UCL=" + Integer.toHexString(classLoader.hashCode()))
但是这在 JBoss 5.x 下不起作用,因为类加载器命名已更改。
有人可以建议一种在 JBoss 5.x 下获取类加载器名称的方法吗?
提前谢谢
最佳答案
找到了该问题的文档:
很高兴获得洞察力。
我终于找到了一个不错的论坛主题:
http://www.coderanch.com/t/464514/JBoss/Class-Loading-Configuration
其他信息:
ClassLoader loader = Thread.currentThread().getContextClassLoader();
System.out.println( loader ); // sun.misc.Launcher$AppClassLoader@a12a00
loader = ThreadClassloader.class.getClassLoader();
System.out.println( loader ); // sun.misc.Launcher$AppClassLoader@a12a00
希望这可以帮助您从代码中获取更多信息。
关于java - 如何从 JBoss 5.x 下的 JavaEE 应用程序获取类加载器 ObjectName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1576519/