The naming subsystem provides an overview of the local JNDI namespace. The Jakarta EE platform specification defines the following JNDI contexts:
java:comp
– The namespace is scoped to the current component (i.e. EJB)java:module
– Scoped to the current modulejava:app
– Scoped to the current applicationjava:global
– Scoped to the application server
In addition to the standard namespaces, WildFly also provides the following two global namespaces:
java:jboss
java:/
Please note that only entries within the java:jboss/exported context are accessible over remote JNDI. For web deployments java:comp
is aliased to java:module
, so EJB’s deployed in a war do not have their own comp namespace.
You can view the JNDI binding in two ways: from the CLI or from the Web admin interface
Using CLI
Connect. Then navigate to the naming subsystem and run the jndi-view command:
[disconnected /] connect [[email protected]:9990 /] /subsystem=naming:jndi-view { "outcome" => "success", "result" => { "java: contexts" => { "java:" => { "ConnectionFactory" => { "class-name" => "org.hornetq.jms.client.HornetQJMSConnection Factory", "value" => "HornetQConnectionFactory [serverLocator=ServerLo catorImpl [initialConnectors=[org-hornetq-core-remoting-impl-invm-InVMConnectorF actory?server-id=0], discoveryGroupConfiguration=null], clientID=null, dupsOKBat chSize=1048576, transactionBatchSize=1048576, readOnly=false]" }, . . . . . }
If running in Domain mode, include the host name and the target server in your command. Example:
/host=master/server=server-one/subsystem=naming:jndi-view
Using the Web Admin Console
Just log in to the admin console and select the Runtime upper Tab. From there, click on the View button in the JNDI subsystem:
Fetch the JNDI Programmatically
Finally, you can dump the JNDI Context of the application server using the javax.naming.NamingEnumeration Class. Here is a simple method which print recursively the JNDI tree under “java:jboss“:
public void discoverJndi(String path, Context context) throws Exception { try { NamingEnumeration<NameClassPair> list = context.list(path); while (list.hasMore()) { String name = list.next().getName(); String child = path.equals("") ? name : path + "/" + name; System.out.println(child); discoverJndi(child, context); } } catch (Exception e) {} }
Then, to explore under the JNDI “java:jboss” just use the above method as follows:
discoverJndi("java:jboss", new InitialContext());
Here is a sample output from WildFly Console:
11:33:59,050 INFO [stdout] (default task-1) java:jboss/TransactionManager 11:33:59,051 INFO [stdout] (default task-1) java:jboss/TransactionSynchronizationRegistry 11:33:59,051 INFO [stdout] (default task-1) java:jboss/UserTransaction 11:33:59,052 INFO [stdout] (default task-1) java:jboss/ee 11:33:59,052 INFO [stdout] (default task-1) java:jboss/ee/concurrency 11:33:59,052 INFO [stdout] (default task-1) java:jboss/ee/concurrency/scheduler 11:33:59,052 INFO [stdout] (default task-1) java:jboss/ee/concurrency/scheduler/default 11:33:59,053 INFO [stdout] (default task-1) java:jboss/ee/concurrency/factory 11:33:59,053 INFO [stdout] (default task-1) java:jboss/ee/concurrency/factory/default 11:33:59,053 INFO [stdout] (default task-1) java:jboss/ee/concurrency/executor 11:33:59,053 INFO [stdout] (default task-1) java:jboss/ee/concurrency/executor/default 11:33:59,053 INFO [stdout] (default task-1) java:jboss/ee/concurrency/context 11:33:59,054 INFO [stdout] (default task-1) java:jboss/ee/concurrency/context/default 11:33:59,054 INFO [stdout] (default task-1) java:jboss/infinispan 11:33:59,054 INFO [stdout] (default task-1) java:jboss/infinispan/container 11:33:59,054 INFO [stdout] (default task-1) java:jboss/infinispan/container/ejb 11:33:59,055 INFO [stdout] (default task-1) java:jboss/infinispan/container/hibernate 11:33:59,055 INFO [stdout] (default task-1) java:jboss/infinispan/container/server 11:33:59,055 INFO [stdout] (default task-1) java:jboss/infinispan/container/web 11:33:59,055 INFO [stdout] (default task-1) java:jboss/infinispan/configuration 11:33:59,056 INFO [stdout] (default task-1) java:jboss/infinispan/configuration/web 11:33:59,056 INFO [stdout] (default task-1) java:jboss/infinispan/configuration/web/default 11:33:59,056 INFO [stdout] (default task-1) java:jboss/infinispan/configuration/web/dist 11:33:59,056 INFO [stdout] (default task-1) java:jboss/infinispan/configuration/web/routing 11:33:59,057 INFO [stdout] (default task-1) java:jboss/infinispan/configuration/ejb 11:33:59,057 INFO [stdout] (default task-1) java:jboss/infinispan/configuration/ejb/client-mappings 11:33:59,057 INFO [stdout] (default task-1) java:jboss/infinispan/configuration/ejb/persistent 11:33:59,057 INFO [stdout] (default task-1) java:jboss/infinispan/configuration/ejb/transient 11:33:59,058 INFO [stdout] (default task-1) java:jboss/datasources 11:33:59,058 INFO [stdout] (default task-1) java:jboss/datasources/ExampleDS 11:33:59,058 INFO [stdout] (default task-1) java:jboss/mail 11:33:59,074 INFO [stdout] (default task-1) java:jboss/mail/Default 11:33:59,077 INFO [stdout] (default task-1) java:jboss/clustering 11:33:59,077 INFO [stdout] (default task-1) java:jboss/clustering/registry 11:33:59,077 INFO [stdout] (default task-1) java:jboss/clustering/registry/web 11:33:59,078 INFO [stdout] (default task-1) java:jboss/clustering/registry/web/default-server 11:33:59,078 INFO [stdout] (default task-1) java:jboss/clustering/registry/ejb 11:33:59,078 INFO [stdout] (default task-1) java:jboss/clustering/registry/ejb/http-remoting-connector 11:33:59,078 INFO [stdout] (default task-1) java:jboss/clustering/dispatcher 11:33:59,079 INFO [stdout] (default task-1) java:jboss/clustering/dispatcher/default 11:33:59,079 INFO [stdout] (default task-1) java:jboss/clustering/dispatcher/ee 11:33:59,079 INFO [stdout] (default task-1) java:jboss/clustering/dispatcher/ejb 11:33:59,079 INFO [stdout] (default task-1) java:jboss/clustering/dispatcher/hibernate 11:33:59,079 INFO [stdout] (default task-1) java:jboss/clustering/dispatcher/server 11:33:59,080 INFO [stdout] (default task-1) java:jboss/clustering/dispatcher/web 11:33:59,080 INFO [stdout] (default task-1) java:jboss/clustering/group 11:33:59,080 INFO [stdout] (default task-1) java:jboss/clustering/group/default 11:33:59,080 INFO [stdout] (default task-1) java:jboss/clustering/group/ee 11:33:59,081 INFO [stdout] (default task-1) java:jboss/clustering/group/ejb 11:33:59,081 INFO [stdout] (default task-1) java:jboss/clustering/group/hibernate 11:33:59,081 INFO [stdout] (default task-1) java:jboss/clustering/group/server 11:33:59,081 INFO [stdout] (default task-1) java:jboss/clustering/group/web 11:33:59,082 INFO [stdout] (default task-1) java:jboss/jgroups 11:33:59,082 INFO [stdout] (default task-1) java:jboss/jgroups/factory 11:33:59,082 INFO [stdout] (default task-1) java:jboss/jgroups/factory/default 11:33:59,082 INFO [stdout] (default task-1) java:jboss/jgroups/factory/ee 11:33:59,082 INFO [stdout] (default task-1) java:jboss/jgroups/factory/udp 11:33:59,083 INFO [stdout] (default task-1) java:jboss/jgroups/channel 11:33:59,083 INFO [stdout] (default task-1) java:jboss/jgroups/channel/default 11:33:59,083 INFO [stdout] (default task-1) java:jboss/jgroups/channel/ee