Storing Objects in the Directory
CORBA Objects
The CORBA (Common Object Request Broker Architecture) defines a language-independent framework for objects to invoke methods on each other. Before an object can invoke a method on another object, it must first obtain a reference to the object. The target object can use different ways to make its reference known to other objects. The traditional way is to use a naming service, such as the Common Object Services (COS) Name Service. Another way is to publish its object reference in an LDAP server that supports the schema defined RFC 2714. Using the JNDI, the code to use either of these ways are the same. You can select the underlying naming service or directory to use at runtime by selecting the initial context to use. The example shown in this section uses an LDAP directory.
Binding a CORBA Object Reference
Before you go on: To run this example, you need ldapbp.jar, as stated in the introduction of this lesson. If you are not using the Java 2 SDK, v1.2 or higher release, then you also need to install Java IDL, a version of which comes with the RMI-IIOP Standard Extension.
The following example first defines an interface, HelloApp by using the Interface Description Language (IDL).
It then defines an implementation of this interface, helloServant.module HelloApp { interface hello { string sayHello(); }; };Next, it creates an instance of helloServant and binds it to the directory, assigning it the name "cn=CorbaHello".class helloServant extends HelloApp._helloImplBase { public String sayHello() { return "\nHello world !!\n" + new java.util.Date(); } }// Create and initialize the ORB ORB orb = ORB.init(args, null); // Create the servant and register it with the ORB helloServant helloRef = new helloServant(); orb.connect(helloRef); // Let service provider use the ORB env.put("java.naming.corba.orb", orb); // Create the initial context DirContext ctx = new InitialDirContext(env); // Bind the object to the directory ctx.bind("cn=CorbaHello", helloRef);After the object has been bound in the directory, an application can look it up by using the following code.
// Look up and narrow the object HelloApp.hello h2 = HelloApp.helloHelper.narrow( (org.omg.CORBA.Object)ctx.lookup("cn=CorbaHello")); // Invoke the method System.out.println(h2.sayHello());To run this example, do the following.
When you later look up this object from the directory, the directory will return the bound helloServant CORBA object. See the Reading Objects from the Directory lesson for an example.
- Run idltojava with HelloApp.idl as the argument to produce the stubs for the CORBA object:
This generates a directory HelloApp that contains .java and .class files.# idltojava HelloApp- Compile this example:
# javac CorbaObj.java- Run the example:
If you want the helloServant created by the example to hang around for other CORBA clients to access, then run the program with the -wait parameter:# java CorbaObj# java CorbaObj -waitStoring Objects in the Directory: End of Lesson
What's next? Now you can:
- Continue on in this trail lesson to learn how to bind arbitrary types of objects.
- Go to the Reading Objects from the Directory lesson to learn how to read objects from the directory.
- Go to the Representation in the Directory lesson to read about the physical representation of Java objects in the directory.
Storing Objects in the Directory