12

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?
James R. Perkins
  • 16,800
  • 44
  • 60
Marcel
  • 4,054
  • 5
  • 36
  • 50
  • Were you able to solve this issue? – RedEagle Jul 17 '15 at 15:56
  • 1
    Hui, more than one year ago :) We worked around by delaying the getAttribute-method-call within a new Thread for a few seconds. Doesn't look perfect but runs productive until today. – Marcel Jul 17 '15 at 20:55

1 Answers1

8

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");
Jean-François Corbett
  • 37,420
  • 30
  • 139
  • 188
Luis Kimura
  • 136
  • 1
  • 3