[wildfly-dev] WildFly Server IP Address and Port

Brian Stansberry brian.stansberry at redhat.com
Tue Sep 1 19:06:36 EDT 2015


On 9/1/15 5:47 PM, Arun Gupta wrote:
> On Tue, Sep 1, 2015 at 3:33 PM, Brian Stansberry
> <brian.stansberry at redhat.com> wrote:
>> Is this scenario different from running multiple WildFly instances on a
>> single machine in a non-Docker setup?
>
> Good point, they are the same.
>

Reading a bit more, it seems Docker gives each container its own 
address, visible to the container via the eth0 interface:

https://docs.docker.com/articles/networking/

>>
>> If not, your choices are to associate each instance with a different
>> address, or to use port offsets. If there's only one available address then
>> you're down to port offsets.
>
>
> So, if WildFly runs with -b <IP_ADDRESS> then the utility above will
> give the correct address and port?
>

Yes, assuming IP_ADDRESS != 0.0.0.0, the server config is using a 
socket-binding named "http" for the web server, and the web server 
address/port is the one you want.

> Arun
>
>>
>>
>> On 9/1/15 4:34 PM, Arun Gupta wrote:
>>>
>>> Brian,
>>>
>>> How do you envision this working in a Docker environment?
>>>
>>> If multiple WildFly containers are running on the same Docker Host
>>> (which is going to be common use case), should each WildFly be bound
>>> to the IP address of the host?
>>>
>>> Possibly invoked with a different port offset?
>>>
>>> Arun
>>>
>>> On Tue, Sep 1, 2015 at 1:31 PM, Brian Stansberry
>>> <brian.stansberry at redhat.com> wrote:
>>>>
>>>> That JMX operation (or the CLI equivalent[1]) will return 0.0.0.0 which
>>>> really is the bound address but AIUI isn't what's wanted.
>>>>
>>>> If the server is configured to use 0.0.0.0, there is no single
>>>> "WildFly.getHostAddress()". That setting means the relevant sockets will
>>>> be listening on all available interfaces on the machine. Which of those
>>>> is the one that's useful to a particular client depends on the network
>>>> topology.
>>>>
>>>> BTW, if you know the names of the nics in your target environment but
>>>> don't know the addresses, WildFly (and EAP) let you configure the
>>>> interfaces to use a particular nic. If binding to 0.0.0.0 is a
>>>> workaround for not knowing the actual addresses, that may help. For
>>>> example:
>>>>
>>>> <interface name="public">
>>>>       <nic name="eth0"/>
>>>> </interface>
>>>>
>>>> The 'name' attribute also allows expressions:
>>>>
>>>> <nic name="${my.public.nic:eth0}"/>
>>>>
>>>> With that kind of config, the JMX query Filippe showed will provide a
>>>> regular address.
>>>>
>>>> [1] The CLI op:
>>>>
>>>> [standalone at localhost:9990 /]
>>>>
>>>> /socket-binding-group=standard-sockets/socket-binding=http:read-attribute(name=bound-address)
>>>> {
>>>>        "outcome" => "success",
>>>>        "result" => "0.0.0.0"
>>>> }
>>>>
>>>> On 9/1/15 12:25 PM, Filippe spolti wrote:
>>>>>
>>>>> Hello Arun,
>>>>>
>>>>> I usethis code w/ Jboss 7 and wildfly 8, i didn't test with wildfly
>>>>> 9/10.
>>>>>
>>>>>            MBeanServer mBeanServer =
>>>>> ManagementFactory.getPlatformMBeanServer();
>>>>>            String url = null;
>>>>>            try {
>>>>>
>>>>>                ObjectName http = new
>>>>>
>>>>> ObjectName("jboss.as:socket-binding-group=standard-sockets,socket-binding=http");
>>>>>                String jbossHttpAddress = (String)
>>>>> mBeanServer.getAttribute(http,"boundAddress");
>>>>>                int jbossHttpPort = (Integer)
>>>>> mBeanServer.getAttribute(http,"boundPort");
>>>>>                url = jbossHttpAddress + ":" + jbossHttpPort;
>>>>>                log.fine("Url obtained from the system: " + url);
>>>>>            } catch (Exception e) {
>>>>>                log.severe(e.getStackTrace().toString());
>>>>>            }
>>>>>            return url;
>>>>>
>>>>> regards.
>>>>>
>>>>>
>>>>> On 09/01/2015 02:20 PM, Arun Gupta wrote:
>>>>>>
>>>>>> Assuming WildFly is bound to all available IP addresses using -b
>>>>>> 0.0.0.0, is there a WildFly-specific API that can be used to obtain
>>>>>> the IP address where the server is running?
>>>>>>
>>>>>> Ideally, I'd like something like:
>>>>>>
>>>>>> WildFly.getHostAddress()
>>>>>> WildFly.getHostPort()
>>>>>>
>>>>>> It could be running in a Docker container, in AWS, on my local laptop,
>>>>>> in OpenShift, or any where else and would like the IP address to be
>>>>>> returned correctly.
>>>>>>
>>>>>> Suggestions?
>>>>>>
>>>>>> Arun
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> wildfly-dev mailing list
>>>>> wildfly-dev at lists.jboss.org
>>>>> https://lists.jboss.org/mailman/listinfo/wildfly-dev
>>>>>
>>>>
>>>>
>>>> --
>>>> Brian Stansberry
>>>> Senior Principal Software Engineer
>>>> JBoss by Red Hat
>>>> _______________________________________________
>>>> wildfly-dev mailing list
>>>> wildfly-dev at lists.jboss.org
>>>> https://lists.jboss.org/mailman/listinfo/wildfly-dev
>>>
>>>
>>>
>>>
>>
>>
>> --
>> Brian Stansberry
>> Senior Principal Software Engineer
>> JBoss by Red Hat
>
>
>


-- 
Brian Stansberry
Senior Principal Software Engineer
JBoss by Red Hat


More information about the wildfly-dev mailing list