При запуске нам нужно получить адрес сервера и порт 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, но если я запустил сервер и приложение загрузилось во время запуска сервера, MBeans там нет.
Я не знаю, почему, но у меня такое чувство, что jBoss гарантирует, что приложение запускается/загружается перед большинством MBeans. Я немного поглядел и узнал, что после того, как Mbeans загрузились после нашего приложения:
- jboss.as:interface =..
- jboss.as:socket-binding-group =..
- jboss.as:subsystem =..
- jboss.as:core-service=management.. (некоторые)
Итак,
- Как заставить jBoss загружать MBeans перед моим приложением?
- Есть ли другой способ /mbean, где я могу получить информацию?