Client Structure

Internally a client will look as shown in Table 1-1.

Table Overview of Jini.1. Table 1-1. Client Pseudocode
Pseudocode Where Discussed
prepare for discovery Chapter 4, "Discovering a Lookup Service"
discover a lookup service Chapter 4, "Discovering a Lookup Service"
prepare a template for lookup search Chapter 5, "Entry Objects" and "Client Search"
lookup a service Chapter 7, "Client Search"
call the service

The following code is a simplified version of a real case, with various checks on exceptions and other conditions omitted. It attempts to find a FileClassifier service, and then calls the method getMIMEType() on this service. The full version of the code is given in a later chapter. I don't provide detailed code explanations right now, as this example is just intended to show how the preceding schema translates into actual code.

package nonworking;

public class TestUnicastFileClassifier {

    public static void main(String argv[]) {
	new TestUnicastFileClassifier();
    }

    public TestUnicastFileClassifier() {
	LookupLocator lookup = null;
	ServiceRegistrar registrar = null;
	FileClassifier classifier = null;

        // Prepare for discovery	
        lookup = new LookupLocator("jini://www.all_about_files.com");

        // Discover a lookup service
        // This uses the synchronous unicast protocol
	registrar = lookup.getRegistrar();

        // Prepare a template for lookup search
	Class[] classes = new Class[] {FileClassifier.class};
	ServiceTemplate template = new ServiceTemplate(null, classes, null);

        // Lookup a service
	classifier = (FileClassifier) registrar.lookup(template);

        // Call the service
	MIMEType type;
	type = classifier.getMIMEType("file1.txt");
        System.out.println("Type is " + type.toString());
    }
} // TestUnicastFileClassifier