Chapter 5. Remote JNDI lookup
5.1. Registering objects to JNDI
The Java Naming and Directory Interface (JNDI) is a Java API for a directory service that allows Java software clients to discover and look up objects via a name.
If an object, registered to JNDI, is supposed to be looked up by remote JNDI clients (i.e. a client that runs in a separate JVM), then it must be registered under java:jboss/exported
context.
For example, if the JMS queue in a messaging-activemq
subsystem must be exposed for remote JNDI clients, then it must be registred to JNDI, like java:jboss/exported/jms/queue/myTestQueue
. Remote JNDI client can look it up by name jms/queue/myTestQueue
.
Example: Configuration of the Queue in standalone-full(-ha).xml
<subsystem xmlns="urn:jboss:domain:messaging-activemq:1.0"> <server name="default"> ... <jms-queue name="myTestQueue" entries="java:jboss/exported/jms/queue/myTestQueue"/> ... </server> </subsystem>
5.2. Configuring remote JNDI
A remote JNDI client can connect and lookup objects by name from JNDI. It must have jboss-client.jar
on its class path. The jboss-client.jar
is available at EAP_HOME/bin/client/jboss-client.jar
.
The following example shows how to lookup the myTestQueue
queue from JNDI in remote JNDI client:
Example: Configuration for an MDB Resource Adapter
Properties properties = new Properties(); properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory"); properties.put(Context.PROVIDER_URL, "http-remoting://<hostname>:8080"); context = new InitialContext(properties); Queue myTestQueue = (Queue) context.lookup("jms/queue/myTestQueue");