The persistent RMI naming service, required for the remote method invocations
(packages java.rmi.*, java.rmi.Registry.*).

Copyright 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Please report bugs at http://www.gnu.org/software/classpath/bugs.html

Usage: rmiregistry <options>

 where <options> includes:
  -port N        Start the registry on the given local port. If this key
                 is not specified, the service starts on the port 1099.
  -verbose       Log binding events to stdout.                
  -stop          Stop the running naming service at the given port.
  
  -transient     Start transient registry service that does not write any
                 data to the disk. Such service looses the stored bindings if
                 restarted. If this key is not specified, the 
                 persistent naming service is started.
  -restart       "Cold start:, clear the persistent naming database, if any.
  -folder Folder Store the persistent binding file in the given folder. If this
                 key is not specified, the file with persistent bindings is 
                 stored into the current folder.
                 
                                
                
