STARTS
Stanford Protocol Proposal for Internet Search and Retrieval

Reference Implementation


Implementation Notes

This page describes some features of the STARTS reference implementation of interest to developers and testers. There is a separate document for information on how to install and run the STARTS reference implementation.   Information contained within is:

Package structure of the server application

The Java STARTSServer application is java code organized into seven packages, and an unpackaged main class. The main class is called corbaServer, which is a wrapper to the STARTSServer class.  The packages are as follows:

Note: no resource or search engine specific code is located outside the wais and resource packages. Full documentation (it may be slightly out of date) on these packages is available in javadoc format.

About the CORBA STARTS client

The CORBA STARTS client source code is in the same ZIP file as the Server source code, so it appears to be in package client.  The client consists of:

The client is written so that it can be run as a java applet or application.  If it is to be run as an applet, the applet class is call STARTSClientApplet.   If it is to be run as an application, the main class is in STARTSClientGUI.   The client requires a few class files from Symantec Visual Cafe, which have been included in symantecClasses.jar.

The STARTS IDL

The CORBA STARTS IDL is in the same ZIP file as the Server source code, so it appears to be in package IDLfiles.   Obviously both the client and server require access to the class files generated from the IDL.

Other software used in the implementation

The Reference implementation was built and/or uses as runtime a number of publicly available software packages:

A Note on Filter and Ranking Expressions

freeWAIS does not natively handle separate ranking and filter expressions. The behavior of separate ranking and filter expressions is handled as follows. Both the STARTS filter and ranking expressions are translated to wais queries. The two distinguishing components of STARTS ranking expressions are handled as follows:

Running freeWAIS on UNIX while running the ORB on NT

Since our ORB was for NT, we needed to have the client and server running on NT.   But since freeWAIS has not been ported to NT, we needed to freeWAIS on UNIX.  We used the vestigal testing/development setup from release 1.0.   (Note that Carl already knew he could run the freeWAIS server on Solaris and communicate with it from NT via sockets. But he didn't want to port the waissearch component to NT.)  So in order to do this, we have the following:

Let's review the components of the reference implementation:

  1. The STARTS client application, which uses the STARTS IDL to specify STARTS requests which it sends to ...
  2. The CORBA ORB, which accepts STARTS requests and communicates via IIOP with ...
  3. The CORBA StartsServer application, which does all STARTS processing except for the actual searching, which then communicates via a port specified in ...
  4. The dummy server java class, which runs on UNIX and accepts the ASCII WAIS search strings over the socket and then communicates via a Java native method call with...
  5. The modified freeWAIS waissearch code, which takes the ASCII WAIS search string from the dummy server and turns it into a WAIS (quasi-Z39.50) query, and which turns the WAIS results into an ASCII result list for use by StartsServer -- communicates via a TCP socket (hard-coded as 5000 in StartsServer) with ...
  6. The freeWAIS server.
Code Differences between NT and Solaris StartsServer

There are a few code fragments that are specific to the platform that StartsServer is running on. These fragments are all delimited by the comments:

/* !!!!! PLATFORM SPECIFIC CODE !!!!! */

/* !!!!! END PLATFORM SPECIFIC CODE !!!!! */

 The NT specific code is preceded by the comment:

/* !!!!! NT VERSION !!!!! */

The Solaris specific code is preceded by the comment:

/* !!!!! SOLARIS VERSION !!!!! */

These code fragments are located in the following files:

You should go through these files and uncomment the code for the appropriate platform and comment out the code for the other platform.

Dummy Server Bridge

In the main StartsServer source directory, you will find a Java source file called DummyServer.java. This is a simple server that listens on port 6790. This corresponds to the port opened in the NT specific code in wais/WAISSourceDescription.java. This dummy server accepts the ASCII WAIS search strings over the socket and then uses a native call to talk to the waissearch code.

Information about Older releases:

STARTS Release 1.1 : Extended Attribute Set Support, with Dublin Core demonstration

STARTS 1.0.


Send questions to help@ncstrl.org