Examples |
This example shows you how to write a program that looks up an object whose name is passed in as a command-line argument. It uses a service provider for the file system. Therefore the name that you supply to the program must be a filename. You do not need to understand details about the service provider at this point.Importing the JNDI Classes
Using your favorite text editor, create a file named Lookup.java. You can import either the entire package or only individual classes and interfaces. The following code imports each class that is used from the javax.naming package.import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException;Creating an Initial Context
In the main() method of the program, create an initial context. Indicate that you're using the file system service provider by setting the environment properties parameter (represented by a Hashtable class) to the InitialContext constructor, as follows.Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory"); Context ctx = new InitialContext(env);How to set up the parameters for this constructor is explained in more detail in The Basics trail.
Looking Up an Object
Next, use Context.lookup() to look up an object. The following code looks up the object bound to the name supplied in the command line.Object obj = ctx.lookup(name);Catching NamingException
The creation of the initial context and the lookup() method can throw a NamingException. For this reason, you need to enclose these calls inside a try/catch clause. Here's the code fragment repeated with the try/catch clause.try { // Create the initial context Context ctx = new InitialContext(env); // Look up an object Object obj = ctx.lookup(name); // Print it System.out.println(name + " is bound to: " + obj); } catch (NamingException e) { System.err.println("Problem looking up " + name + ": " + e); }Compiling the Program
Next, you compile the source file using the Java compiler. To compile to program, you must have access to the JNDI classes. If you are using the Java 2 SDK, v1.3, then the JNDI classes are already included. Otherwise, you can include the classes either by setting the CLASSPATH variable to include the jndi.jar that you downloaded from the JNDI Web site or by installing jndi.jar as an installed extension. See the Preparations lesson for details on how to install the JNDI classes and service providers.If the compilation succeeds, then the compiler will create a file named
Lookup.class
in the same directory (folder) as the Java source file (Lookup.java
). If the compilation fails, then make sure that you typed in and named the program exactly as shown here, using the capitalization shown. If you are still having problems, then see the Common Problems lesson for help.
Running the Program
To run the program, you need access to the JNDI classes, the file system service provider, and your example class (Lookup.class). See the compilation step for instructions on including access to the JNDI classes. To include the file system service provider classes (fscontext.jar and providerutil.jar), either include them in your CLASSPATH variable or install them as extensions. Note that these archive files are not included with the Java 2 SDK, v1.3. See the Preparations lesson for details on how to install the JNDI classes and service providers. Finally, include the directory that contains your Lookup.class file in your the CLASSPATH variable.To run the program, supply the name of a file in your file system, as follows:
Or as follows:# java Lookup /tmpIf you supply a file directory, then you will see something like the following.# java Lookup \autoexec.batIf the name that you supplied is a file, then you will see something like this:# java Lookup /tmp /tmp is bound to: com.sun.jndi.fscontext.RefFSContext@1dae083fIf you have any trouble running this example, then see Common Problems ./tmp/f is bound to: //tmp/f
Examples |