Download the JDK
Search the Tutorials
Hide the TOC
Trail: Java Naming and Directory Interface(TM).
Lesson: Java Objects in the Directory
Java Objects in the Directory
Storing and Reading Objects
Serializable Objects
Home Page > Java Naming and Directory Interface(TM). > Java Objects in the Directory
Storing and Reading Objects

> Applications and services can use the directory in different ways to store and locate objects:

> - Store (a copy of) the object itself.
> - Store a reference to an object.
> - Store attributes that describe the object.
> In general terms, a JavaTM object's serialized form contains the object's state and an object's reference in a compact representation of addressing information that can be used to contact the object. Some examples are given in the Naming and Directory Operations lesson. An object's attributes are properties that are used to describe the object; attributes might include addressing and/or state information.

> Which of these three ways to use depends on the application/system that is being built and how it needs to interoperate with other applications and systems that will share the objects stored in the directory. Another factor is the support provided by the service provider and the underlying directory service.

> Programmatically, all applications use one of the following methods when storing objects in the directory:

> - `Context.bind()`
> - `DirContext.bind()`
> - `Context.rebind()`
> - `DirContext.rebind()`
> The application passes the object that it wants to store to one of these methods. Then, depending on the types of objects that the service provider supports, the object will be transformed into a representation acceptable to the underlying directory service.

> This lesson shows how to store serializable objects in the directory once the object is stored, you can simply use `lookup()`to get a copy of the object back from the directory, regardless of what type of information was actually stored.

> You can get the object back not only by using `lookup()`, but also when you `list` a context and when you `search` a context or its subtree. In all of these cases, object factories might be involved. Object factories are discussed in detail in the JNDI Tutorial

> For storing below objects types, please refer to the JNDI Tutorial

> - `Referenceable` objects and JNDI `Reference`s
>   The bind() examples in the Naming and Directory Operations lesson use Referenceable objects.
> - Objects with attributes (`DirContext`)
> - RMI (Java Remote Method Invocation) objects (including those that use IIOP)
> - CORBA objects

> > Before you go on: To run these examples successfully, you must either turn off schema-checking in the server or add the Java schema that accompany this tutorial to the server. This task is typically performed by the directory server's administrator. See the Software Setup lesson for more information.

> > Windows Active Directory: `Context.rebind()` and `DirContext.rebind()` do not work against Active Directory because these methods work by reading the attributes of the entry to be updated, removing the entry, and then adding a new entry that contains the modified attributes. Active Directory returns some attributes that cannot be set by the user, causing the final addition step to fail. The workaround for this problem is to use `DirContext.getAttributes()` to obtain and save the attributes that you want to keep. Then, remove the entry and add it back with the saved attributes (and any others that you want to add) using `DirContext.bind()`.

Previous page: Java Objects in the Directory
Next page: Serializable Objects