How to get bound server address and port programmatically in Java EE?
jakarta-ee, java, jboss, jboss7.x, mbeans
Solution
I got the same issue in JBOSS Wildfly 8.1 . I solved the problem with the code below that worked for me to get server address and http port:
//http port
ManagementFactory.getPlatformMBeanServer().getAttribute(new ObjectName("jboss.as:socket-binding-group=standard-sockets,socket-binding=http"), "port");
//http adress
ManagementFactory.getPlatformMBeanServer().getAttribute(new ObjectName("jboss.as:interface=public"), "inet-address");
Problem
At startup we need to get the server address and the http port of the running application. Until now we made it like this: ``` 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")); ``` Everything was fine but after migration from jBoss 7.1.1.Final to 7.1.3.Final we got the problem that the MBean isn't defined at server startup. That means everything is fine if I deploy the application on an already running jboss server, but if I start the server and the application is loaded up during server start MBeans are not there. I don't know why but I have the feeling that jBoss makes sure, that out application is started/loaded before most of the MBeans. I had a small look and found out that following Mbeans are loaded after our application: - jboss.as:interface=.. - jboss.as:socket-binding-group=.. - jboss.as:subsystem=.. - jboss.as:core-service=management.. (some) So, - how can I force jBoss to load MBeans before my application? - is there another way/mbean where I can get my information?