type=page
status=published
title=Administering the Java Naming and Directory Interface (JNDI) Service
next=transactions.html
prev=jms.html
~~~~~~

= Administering the Java Naming and Directory Interface (JNDI) Service

[[GSADG00021]][[ablky]]


[[administering-the-java-naming-and-directory-interface-jndi-service]]
== 18 Administering the Java Naming and Directory Interface (JNDI) Service

The Java Naming and Directory Interface (JNDI) API is used for accessing
different kinds of naming and directory services. Jakarta EE components
locate objects by invoking the JNDI lookup method.

The following topics are addressed here:

* link:#ggjue[About JNDI]
* link:#gglpq[Administering JNDI Resources]

Instructions for accomplishing the tasks in this chapter by using the
Administration Console are contained in the Administration Console
online help.

[[ggjue]][[GSADG00603]][[about-jndi]]

=== About JNDI

By making calls to the JNDI API, applications locate resources and other
program objects. A resource is a program object that provides
connections to systems, such as database servers and messaging systems.
A JDBC resource is sometimes referred to as a data source. Each resource
object is identified by a unique, people-friendly name, called the JNDI
name. A resource object and its JNDI name are bound together by the
naming and directory service, which is included with the {productName}.

When a new name-object binding is entered into the JNDI, a new resource
is created.

The following topics are addressed here:

* link:#abllb[Jakarta EE Naming Environment]
* link:#gglpg[How the Naming Environment and the Container Work
Together]
* link:#abllc[Naming References and Binding Information]

[[abllb]][[GSADG00780]][[java-ee-naming-environment]]

==== Jakarta EE Naming Environment

JNDI names are bound to their objects by the naming and directory
service that is provided by a Jakarta EE server. Because Jakarta EE components
access this service through the JNDI API, the object usually uses its
JNDI name. For example, the JNDI name of the Apache Derby database is
`jdbc/_default`. At startup, the {productName} reads information from
the configuration file and automatically adds JNDI database names to the
name space, one of which is `jdbc/_default`.

Jakarta EE application clients, enterprise beans, and web components must
have access to a JNDI naming environment.

The application component's naming environment is the mechanism that
allows customization of the application component's business logic
during deployment or assembly. This environment allows you to customize
the application component without needing to access or change the source
code off the component. A Jakarta EE container implements the provides the
environment to the application component instance as a JNDI naming
context.

[[gglpg]][[GSADG00781]][[how-the-naming-environment-and-the-container-work-together]]

==== How the Naming Environment and the Container Work Together

The application component's environment is used as follows:

* The application component's business methods access the environment
using the JNDI interfaces. In the deployment descriptor, the application
component provider declares all the environment entries that the
application component expects to be provided in its environment at
runtime.
* The container provides an implementation of the JNDI naming context
that stores the application component environment. The container also
provides the tools that allow the deployer to create and manage the
environment of each application component.
* A deployer uses the tools provided by the container to initialize the
environment entries that are declared in the application component's
deployment descriptor. The deployer sets and modifies the values of the
environment entries.
* The container makes the JNDI context available to the application
component instances at runtime. These instances use the JNDI interfaces
to obtain the values of the environment entries.

Each application component defines its own set of environment entries.
All instances of an application component within the same container
share the same environment entries. Application component instances are
not allowed to modify the environment at runtime.

[[abllc]][[GSADG00782]][[naming-references-and-binding-information]]

==== Naming References and Binding Information

A resource reference is an element in a deployment descriptor that
identifies the component's coded name for the resource. For example,
`jdbc/SavingsAccountDB`. More specifically, the coded name references a
connection factory for the resource.

The JNDI name of a resource and the resource reference name are not the
same. This approach to naming requires that you map the two names before
deployment, but it also decouples components from resources. Because of
this decoupling, if at a later time the component needs to access a
different resource, the name does not need to change. This flexibility
makes it easier for you to assemble Jakarta EE applications from
preexisting components.

The following table lists JNDI lookups and their associated resource
references for the Jakarta EE resources used by the {productName}.

[[GSADG1029]][[sthref87]][[fxizy]]


Table 18-1 JNDI Lookup Names and Their Associated References

[width="100%",cols="38%,62%",options="header",]
|===
|JNDI Lookup Name |Associated Resource Reference
|`java:comp/env` |Application environment entries

|`java:comp/env/jdbc` |JDBC DataSource resource manager connection
factories

|`java:comp/env/ejb` |EJB References

|`java:comp/UserTransaction` |UserTransaction references

|`java:comp/env/mail` |JavaMail Session Connection Factories

|`java:comp/env/url` |URL Connection Factories

|`java:comp/env/jms` |JMS Connection Factories and Destinations

|`java:comp/ORB` |ORB instance shared across application components
|===


[[gglpq]][[GSADG00604]][[administering-jndi-resources]]

=== Administering JNDI Resources

Within {productName}, you can configure your environment for custom
and external JNDI resources. A custom resource accesses a local JNDI
repository; an external resource accesses an external JNDI repository.
Both types of resources need user-specified factory class elements, JNDI
name attributes, and so on.

* link:#ablle[Administering Custom JNDI Resources]
* link:#gitxz[Administering External JNDI Resources]

[[ablle]][[GSADG00783]][[administering-custom-jndi-resources]]

==== Administering Custom JNDI Resources

A custom resource specifies a custom server-wide resource object factory
that implements the `javax.naming.spi.ObjectFactory` interface.

The following topics are addressed here:

* link:#giowe[To Create a Custom JNDI Resource]
* link:#gioxb[To List Custom JNDI Resources]
* link:#giwlk[To Update a Custom JNDI Resource]
* link:#gioxl[To Delete a Custom JNDI Resource]

[[giowe]][[GSADG00503]][[to-create-a-custom-jndi-resource]]

===== To Create a Custom JNDI Resource

Use the `create-custom-resource` subcommand in remote mode to create a
custom resource.

1. Ensure that the server is running. Remote subcommands require a running server.
2. Create a custom resource by using the
link:reference-manual/create-custom-resource.html#GSRFM00022[`create-custom-resource`] subcommand.
+
Information on properties for the subcommand is contained in this help
page.
3. Restart {productName}.
+
See link:domains.html#ginqj[To Restart a Domain].

[[GSADG00284]][[gioyi]]
Example 18-1 Creating a Custom Resource

This example creates a custom resource named `sample-custom-resource`.

[source]
----
asadmin> create-custom-resource --restype topic --factoryclass com.imq.topic
sample_custom_resource
Command create-custom-resource executed successfully.
----

[[GSADG1030]]

See Also

You can also view the full syntax and options of the subcommand by
typing `asadmin help create-custom-resource` at the command line.

[[gioxb]][[GSADG00504]][[to-list-custom-jndi-resources]]

===== To List Custom JNDI Resources

Use the `list-custom-resources` subcommand in remote mode to list the
existing custom resources.

1. Ensure that the server is running. Remote subcommands require a running server.
2. List the custom resources by using the
link:reference-manual/list-custom-resources.html#GSRFM00162[`list-custom-resources`] subcommand.

[[GSADG00285]][[gioyr]]
Example 18-2 Listing Custom Resources

This example lists the existing custom resources.

[source]
----
asadmin> list-custom-resources
sample_custom_resource01
sample_custom_resource02
Command list-custom-resources executed successfully
----

[[GSADG1031]]

See Also

You can also view the full syntax and options of the subcommand by
typing `asadmin help list-custom-resources` at the command line.

[[giwlk]][[GSADG00505]][[to-update-a-custom-jndi-resource]]

===== To Update a Custom JNDI Resource

1. List the custom resources by using the
link:reference-manual/list-custom-resources.html#GSRFM00162[`list-custom-resources`] subcommand.
2. Use the link:reference-manual/set.html#GSRFM00226[`set`] subcommand to modify a custom JNDI
resource.

[[GSADG00286]][[giwkg]]
Example 18-3 Updating a Custom JNDI Resource

This example modifies a custom resource.

[source]
----
asadmin> set server.resources.custom-resource.custom
/my-custom-resource.property.value=2010server.resources.custom-resource.custom
/my-custom-resource.property.value=2010
----

[[gioxl]][[GSADG00506]][[to-delete-a-custom-jndi-resource]]

===== To Delete a Custom JNDI Resource

Use the `delete-custom-resource` subcommand in remote mode to delete a
custom resource.

1. Ensure that the server is running. Remote subcommands require a running server.
2. List the custom resources by using the
link:reference-manual/list-custom-resources.html#GSRFM00162[`list-custom-resources`] subcommand.
3. Delete a custom resource by using the
link:reference-manual/delete-custom-resource.html#GSRFM00074[`delete-custom-resource`] subcommand.

[[GSADG00287]][[gioxh]]
Example 18-4 Deleting a Custom Resource

This example deletes a custom resource named `sample-custom-resource`.

[source]
----
asadmin> delete-custom-resource sample_custom_resource
Command delete-custom-resource executed successfully.
----

[[GSADG1032]]

See Also

You can also view the full syntax and options of the subcommand by
typing `asadmin help delete-custom-resource` at the command line.

[[gitxz]][[GSADG00784]][[administering-external-jndi-resources]]

==== Administering External JNDI Resources

Applications running on {productName} often require access to
resources stored in an external JNDI repository. For example, generic
Java objects might be stored in an LDAP server according to the Java
schema. External JNDI resource elements let you configure such external
resource repositories.

The following topics are addressed here:

* link:#gitxn[To Register an External JNDI Resource]
* link:#gitvj[To List External JNDI Resources]
* link:#gitwc[To List External JNDI Entries]
* link:#giwnr[To Update an External JNDI Resource]
* link:#gitvt[To Delete an External JNDI Resource]
* link:#abllk[Example of Using an External JNDI Resource]
* link:#gknaf[To Disable {productName} v2 Vendor-Specific JNDI Names]

[[gitxn]][[GSADG00507]][[to-register-an-external-jndi-resource]]

===== To Register an External JNDI Resource

Use the `create-jndi-resource` subcommand in remote mode to register an
external JNDI resource.

[[GSADG1033]]

Before You Begin

The external JNDI factory must implement the
`javax.naming.spi.InitialContextFactory` interface.

1. Ensure that the server is running. Remote subcommands require a running server.
2. Register an external JNDI resource by using the
link:reference-manual/create-jndi-resource.html#GSRFM00041[`create-jndi-resource`] subcommand.
+
Information on properties for the subcommand is contained in this help
page.
3. Restart {productName}.
+
See link:domains.html#ginqj[To Restart a Domain].

[[GSADG00288]][[giwcx]]
Example 18-5 Registering an External JNDI Resource

In This example `sample_jndi_resource` is registered.

[source]
----
asadmin> create-jndi-resource --jndilookupname sample_jndi
--restype queue --factoryclass sampleClass --description "this is a sample jndi
resource" sample_jndi_resource
Command create-jndi-resource executed successfully
----

[[GSADG1034]]

See Also

You can also view the full syntax and options of the subcommand by
typing `asadmin help create-jndi-resource` at the command line.

[[gitvj]][[GSADG00508]][[to-list-external-jndi-resources]]

===== To List External JNDI Resources

Use the `list-jndi-resources` subcommand in remote mode to list all
existing JNDI resources.

1. Ensure that the server is running. Remote subcommands require a running server.
2. List the existing JNDI resources by using
theolink:GSRFM00179[`list-jndi-resources`] subcommand.

[[GSADG00289]][[giwbe]]
Example 18-6 Listing JNDI Resources

This example lists the JNDI resources.

[source]
----
asadmin> list-jndi-resources
jndi_resource1
jndi_resource2
jndi_resource3
Command list-jndi-resources executed successfully
----

[[GSADG1035]]

See Also

You can also view the full syntax and options of the subcommand by
typing `asadmin help list-jndi-resources` at the command line.

[[gitwc]][[GSADG00509]][[to-list-external-jndi-entries]]

===== To List External JNDI Entries

Use the `list-jndi-entries` subcommand in remote mode to browse and list
the entries in the JNDI tree. You can either list all entries, or you
can specify the JNDI context or subcontext to list specific entries.

1. Ensure that the server is running. Remote subcommands require a running server.
2. List the JNDI entries for a configuration by using the
link:reference-manual/list-jndi-entries.html#GSRFM00178[`list-jndi-entries`] subcommand.

[[GSADG00290]][[giwal]]
Example 18-7 Listing JNDI Entries

This example lists all the JNDI entries for the naming service.

[source]
----
asadmin> list-jndi-entries
jndi_entry03
jndi_entry72
jndi_entry76
Command list-jndi-resources executed successfully
----

[[GSADG1036]]

See Also

You can also view the full syntax and options of the subcommand by
typing `asadmin help list-jndi-entries` at the command line.

[[giwnr]][[GSADG00510]][[to-update-an-external-jndi-resource]]

===== To Update an External JNDI Resource

1. List the existing JNDI resources by using
theolink:GSRFM00179[`list-jndi-resources`] subcommand.
2. Use the link:reference-manual/set.html#GSRFM00226[`set`] subcommand to modify an external
JNDI resource.

[[GSADG00291]][[giwoa]]
Example 18-8 Updating an External JNDI Resource

This example modifies an external resource.

[source]
----
asadmin> set server.resources.external-jndi-resource.my-jndi-resource.
jndi-lookup-name=bar server.resources.external-jndi-resource.my-jndi-resource.jndi-lookup-name=bar
----

[[gitvt]][[GSADG00511]][[to-delete-an-external-jndi-resource]]

===== To Delete an External JNDI Resource

Use the `delete-jndi-resource` subcommand in remote mode to remove a
JNDI resource.

1. Ensure that the server is running. Remote subcommands require a running server.
2. Remove an external JNDI entry by using the
link:reference-manual/delete-jndi-resource.html#GSRFM00093[`delete-jndi-resource`] subcommand.

[[GSADG00292]][[giwby]]
Example 18-9 Deleting an External JNDI Resource

This example deletes an external JNDI resource:

[source]
----
asadmin> delete-jndi-resource jndi_resource2
Command delete-jndi-resource executed successfully.
----

[[GSADG1037]]

See Also

You can also view the full syntax and options of the subcommand by
typing `asadmin help delete-jndi-resource` at the command line.

[[abllk]][[GSADG00688]][[example-of-using-an-external-jndi-resource]]

===== Example of Using an External JNDI Resource

[source,xml]
----
<resources>
 <!-- external-jndi-resource element specifies how to access Jakarta EE resources
 -- stored in an external JNDI repository. This example
 -- illustrates how to access a java object stored in LDAP.
 -- factory-class element specifies the JNDI InitialContext factory that
 -- needs to be used to access the resource factory. property element
 -- corresponds to the environment applicable to the external JNDI context
 -- and jndi-lookup-name refers to the JNDI name to lookup to fetch the
 -- designated (in this case the java) object.
 -->
  <external-jndi-resource jndi-name="test/myBean"
      jndi-lookup-name="cn=myBean"
      res-type="test.myBean"
      factory-class="com.sun.jndi.ldap.LdapCtxFactory">
    <property name="PROVIDER-URL" value="ldap://ldapserver:389/o=myObjects" />
    <property name="SECURITY_AUTHENTICATION" value="simple" />
    <property name="SECURITY_PRINCIPAL", value="cn=joeSmith, o=Engineering" />
    <property name="SECURITY_CREDENTIALS" value="changeit" />
  </external-jndi-resource>
</resources>
----

[[gknaf]][[GSADG00512]][[to-disable-glassfish-server-v2-vendor-specific-jndi-names]]

===== To Disable {productName} v2 Vendor-Specific JNDI Names

The EJB 3.1 specification supported by {productName} 7 defines
portable EJB JNDI names. Because of this, there is less need to continue
to use older vendor-specific JNDI names.

By default, {productName} v2-specific JNDI names are applied
automatically by {productName} 7 for backward compatibility.
However, this can lead to some ease-of-use issues. For example,
deploying two different applications containing a Remote EJB component
that exposes the same remote interface causes a conflict between the
default JNDI names.

The default handling of v2-specific JNDI names in {productName} 7
can be managed with the `asadmin` command or with the
`disable-nonportable-jndi-names` boolean property for the
`ejb-container` element in `glassfish-ejb-jar.xml`.

Use the `asadmin` command or directly modify the `glassfish-ejb-jar.xml`
file to set the `disable-nonportable-jndi-names` property.

* Using the `asadmin` command:
+
[source]
----
asadmin> set server.ejb-container.property.disable-nonportable-jndi-names="true"
----
* Directly modifying the `glassfish-ejb-jar.xml` file.
1. Add the `disable-nonportable-jndi-names` property to the
`ejb-container` element in `glassfish-ejb-jar.xml`.
2. Set the value of the `disable-nonportable-jndi-names` boolean, as
desired.
+
`false` - Enables the automatic use of {productName} v2-specific JNDI
names. This is the default setting.
+
`true` - Disables the automatic use of v2-specific JNDI names. In all
cases, 5.0-compatible JNDI names will be used.
3. Save the `glassfish-ejb-jar.xml` file and restart the {productName} domain.
+
This setting applies to all EJBs deployed to the server.


