在启动时,我们需要获取正在运行的应用程序的服务器地址和HTTP端口。直到现在我们都是这样做的:
MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
ObjectName socketBindingMBean = new ObjectName("jboss.as:socket-binding-group=standard-sockets,socket-binding=http");
String host = (String) mBeanServer.getAttribute(socketBindingMBean, "boundAddress"),
Integer port = (Integer) mBeanServer.getAttribute(socketBindingMBean, "boundPort"));
迁移自jBoss 7.1.1.Final到7.1.3.Final后,我们遇到了一个问题:服务器启动时MBean未定义。这意味着,如果我将应用程序部署在已运行的jboss服务器上,则一切正常,但是如果我启动服务器并加载应用程序during服务器启动期间,MBeans不在那里。
我不知道为什么,但我有一种感觉,jBoss确保我们的应用程序在大多数MBeans之前启动/加载。我稍微查看了一下并发现以下Mbeans在我们的应用程序之后加载:
- jboss.as:interface=..
- jboss.as:socket-binding-group=..
- jboss.as:subsystem=..
- jboss.as:core-service=management.. (some)
所以,
- 如何强制jBoss在我的应用程序之前加载MBeans?
- 是否有另一种方法/ Mbean可以获取我的信息?