Just started with documentation, please wait until it's finished.

The Handle Server

First a few facts to clear up some common misconceptions:

A Handle server runs as a separate process that receives TCP requests from other Handle servers, and issues resolution requests to a global server or servers if a Handle entered locally does not correspond to some local content. The Handle protocol is based on TCP, so it will need to be installed on a server that can broadcast and receive TCP on port 2641. You can either use a handle server on the same machine as DSpace runs or you can install it on a separate machine. Installing it on the same machine is a little bit easier, installing it on a seperate machine you can use one handle server for more than one DSpace installation.

Installing a Handle server on the same machine DSpace runs

  1. To configure your DSpace installation to run the handle server, run the following command:

    [dspace]/bin/dspace make-handle-config [dspace]/handle-server

    Ensure that [dspace]/handle-server matches whatever you have in dspace.cfg for the handle.dir property.

  2. Edit the resulting [dspace]/handle-server/config.dct file to include the following lines in the "server_config"clause:

    "storage_type" = "CUSTOM"
    "storage_class" = "org.dspace.handle.HandlePlugin"
    

    This tells the Handle server to get information about individual Handles from the DSpace code.

  3. Once the configuration file has been generated, you will need to go to http://hdl.handle.net/4263537/5014 to upload the generated sitebndl.zip file. The upload page will ask you for your contact information. An administrator will then create the naming authority/prefix on the root service (known as the Global Handle Registry), and notify you when this has been completed. You will not be able to continue the handle server installation until you receive further information concerning your naming authority.
  4. When CNRI has sent you your naming authority prefix, you will need to edit the config.dct file. The file will be found in /[dspace]/handle-server. Look for "300:0.NA/YOUR_NAMING_AUTHORITY". Replace YOUR_NAMING_AUTHORITY with the assigned naming authority prefix sent to you.
  5. Now start your handle server (as the dspace user):

    [dspace]/bin/start-handle-server

    Note that since the DSpace code manages individual Handles, administrative operations such as Handle creation and modification aren't supported by DSpace's Handle server.

Installing a Handle server on a separate machine

The Handle server you use must be dedicated to resolve Handles from DSpace. You cannot use a Handle server that is in use with other software already. You can use CNRI's Handle Software -- all you have to do, is to use a plugin for it, that is shipped with DSpace. The following instructions were tested with CNRI's Handle software version 7.3.1. You can do the following steps on another machine then the machine DSpace runs on, but you have to copy some files from the machine on which DSpace is installed.

  1. Download the CNRI Handle Software: http://www.handle.net/download.html. In the tarball you'll find an INSTALL.txt with installation instructions -- follow it.
  2. Create the following two files in /hs/srv_1.

    log4j.rootCategory=INFO, A1
    log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.A1.File=/hs/srv_1/logs/handle-plugin.log
    log4j.appender.A1.DatePattern='.'yyyy-MM-dd
    log4j.appender.A1.layout=org.apache.log4j.PatternLayout
    log4j.appender.A1.layout.ConversionPattern=%d %-5p %c @ %m%n
    log4j.logger.org.apache.axis.handlers.http.HTTPAuthHandler=INFO

    Change the path in the third line, if necessary.

    dspace.handle.endpoint1 = http://example.org/dspace/handleresolver
    

    If you are using XMLUI take a look in [dspace-install]/config/dspace.cfg, change the URL above to the value of your dspace.url and add /handleresolver to the end of it. If you are using JSPUI take a look in [dspace-install]/config/dspace.cfg, change the URL above in the value of your dspace.url and add /json/hdlresolver to the end of it. If you run more than one DSpace Installation, you may add more DSpace Endpoints.  Just increase the number at the end of the key one by another.

  3. Edit /hs/srv_1/config.dct file to include the following lines in the "server_config" clause:

    "storage_type" = "CUSTOM"
    "storage_class" = "org.dspace.handle.MultiRemoteDSpaceRepositoryHandlePlugin"
  4. Copy /hs/hsj-7.3.1/bin/hdl-server to /hs/srv_1/start-hdl-server
  5. Edit /hs/srv_1/start-hdl-server:
    1. Find the last line that begins with HDLHOME=
    2. Below that line add the following one: HDLHOME="/hs/hsj-7.3.1/"
    3. Find a line that contains exec java ... net.handle.server.Main ...
    4. Add "-Dlog4j.configuration=file:///hs/srv_1/log4j-handle-plugin.properties -Ddspace.handle.plugin.configuration=/hs/srv_1/handle-dspace-plugin.cfg" right in front of net.handle.server.Main.
  6. If your handle server is running, stop it.
  7. From now on you should start this handle server using /hs/srv_1/start-hdl-server

Please pay attention: The Handle Server will only start, if it is able to connect to at least one running DSpace Installation. It only resolves the handles of the DSpace Installations that were running when it was started.