WildFly Naming Subsystem Configuration

From NovaOrdis Knowledge Base
Jump to navigation Jump to search

Internal

Overview

The "naming" subsystem contains configuration related to various JNDI namespaces.

<subsystem xmlns="urn:jboss:domain:naming:1.4">
    <remote-naming/>
</subsystem>

Configuration

<remote-naming>

If present, this element activates the remote naming server, that allows access to items bound in the java:jboss/exported JNDI context. More details about the JBoss exported JNDI namespace and the remote naming server can be found here:

WildFly JNDI Concepts - Exporting for Access by Remote JNDI Clients

Importing an External JNDI Context

This section describes the configuration required to import an external JNDI context into the local JND namespace. The external JNDI context must be exported by a remote server. More details about external JNDI contexts are available here:

External JNDI Contexts

Provided that remote JNDI objects have been bound into an externally exported context ("java:/jboss/export") by a remote server, the can be made available locally by declaring an "external-context" in the "naming" subsystem configuration of the local server:

<subsystem xmlns="urn:jboss:domain:naming:1.4">
    ...
    <bindings>
        <external-context name="java:global/remote-hornetq" 
                          module="org.jboss.remote-naming" 
                          class="javax.naming.InitialContext">
            <environment>
                <property name="java.naming.factory.initial" value="org.jboss.naming.remote.client.InitialContextFactory"/>
                <property name="java.naming.provider.url" value="remote://${remote.node.one.address}:${remote.node.one.remoting.port},remote://${remote.node.two.address}:${remote.node.two.remoting.port}"/>
                <property name="java.naming.security.principal" value="${remoting.user.name}"/>
                <property name="java.naming.security.credentials" value="${remoting.password}"/>
            </environment>
        </external-context>
    </bindings>
</subsystem>

The external-context's "name" is the local JNDI name to bind to. The external namespace will be accessible locally as an JNDI Context with that name. For details on how to programmatically access the external context, see the "Accessing the External JNDI Context" section below.

The system properties referred in the example can be declared in a <system-properties> block, as follows, and they have the following semantics:

<system-properties>
    <property name="remote.node.one.address" value="127.0.0.1"/>
    <property name="remote.node.one.remoting.port" value="4547"/>
    <property name="remote.node.two.address" value="127.0.0.1"/>
    <property name="remote.node.two.remoting.port" value="4647"/>
    <property name="remoting.user.name" value="some-remoting-user"/>
    <property name="remoting.password" value="some-remoting-password"/>
</system-properties>
  • "remote.node.one.address" the address of the first remote EAP node that exposes the external JNDI context.
  • "remote.node.one.remoting.port" the remoting port of the first remote EAP node. The default value is 4447 and if the node runs with an offset of 100, the value should be 4547.
  • "remote.node.two.address" the address of the second remote EAP node.
  • "remote.node.two.remoting.port" the remoting port of the second remote EAP node. The default value is 4447 and if the node runs with an offset of 200, the value should be 4647.
  • "remoting.user.name"/"remoting.password" the remoting credentials. Remoting can be configured to allow unauthenticated access as described here: "Disabling Remoting Authentication"

Accessing the External JNDI Context

More details about external JNDI Contexts can be found here:

A working example is available here:

https://github.com/NovaOrdis/playground/tree/master/jboss/messaging/sending-and-receiving-from-remote-destinations