This guide should help you setup the OAI-PMH provider for fcrepo using tomcat7 as the platform.
(Parts of this wiki page were taken from https://github.com/fcrepo4-labs/fcrepo4-oaiprovider)
Assumptions
I'm using a Virtualbox VM, but this should work "as-is" on any linux platform
Xubuntu 14.04-desktop-i386
Java version "1.7.0_65", OpenJDK Runtime Environment (IcedTea 2.5.2)
OpenJDK Client VM (build 24.65-b04, mixed mode, sharing)
CATALINA_HOME is /var/lib/tomcat7
<fcrepo> is fcrepo-webapp-4.0.0-beta-04-SNAPSHOT
Setting up Tomcat7
Om Xubuntu, setting up tomcat7 is a simple command: "sudo apt-get install tomcat7" to download and install the webserver and any prerequisites. On other systems, use the build-in package manager (yum, portage) to install tomcat7 or install it manually using the useful instructions on the packages website. By the completion of the installation, you should be able to run tomcat and see the "It Worked!" screen when you visit http://localhost:8080
Setting up Fedora Repository/fcrepo
Using either the pre-packaged binary .WAR file or building it from the source files (using the helpful and informative instructions), the result should be a .WAR file. Copy the .WAR file to the tomcats root directory <CATALINA_HOME>/webapps. Start/restart tomcat and http://localhost:8080/<fcrepo>/rest should display the fedora repository front page. (I've called it <fcrepo> as its the name of the .WAR file minus the .war extension and it can vary on build number/release.)
Install the fcrepo-oaiprovider library dependencies
Fcrepo-oaiprovider relies on JAX-B to operate, so install them by grabbing the jar files:
http://central.maven.org/maven2/com/sun/xml/bind/jaxb-impl/2.2.7/jaxb-impl-2.2.7.jar
http://central.maven.org/maven2/com/sun/xml/bind/jaxb-core/2.2.7/jaxb-core-2.2.7.jar
and moving them to <CATALINA_HOME>/webapps/<fcrepo>/WEB-INF/lib
Building fcrepo-oaiprovider
1) Obtain and build the fcrepo-oaiprovider source code
git clone https://github.com/fcrepo4-labs/fcrepo4-oaiprovider.git
cd fcrepo4-oaiprovider
mvn package
2) Move the binary to the fcrepo libraries
cp target/fcrepo4-oaiprovider-4.0.0-beta-04-SNAPSHOT.jar <CATALINA_HOME>/webapps/<fcrepo>/WEB-INF/lib
3) Copy the oai.xml file to the fcrepo config directory
cp fcrepo4-oaiprovider/src/main/resources/spring/oai.xml /<CATALINA_HOME>/webapps/<fcrepo>/WEB-INF/classes/spring/
4) Add the import to fcrepo's master.xml file
- Edit <CATALINA_HOME>/webapps/<fcrepo>/WEB-INF/classes/spring/master.xml
- Add '<import resource="classpath:/spring/oai.xml"/>' after the other <import declarations at the end of the file
- Save the file
4b) Make sure the OAI namespace is defined as a Compact Node Type. I added:
<oai = 'http://www.openarchives.org/OAI/2.0/'>
To fcrepo-kernel-impl/src/main/resources/fedora-node-types.cnd in the main core and rebuilt, but you may have to find another way to add it. See Here
5) Restart tomcat, wait a while. Go to http://localhost:8080/<fcrepo>/rest/oai?verb=Identify. If it all worked, you should see xml that defines the default configuration for the OAI-PMH provider.
Popular errors are either the OAI-Provider generating 4xx HTTP error codes or producing the default values (see below). The 4xx HTTP Error codes are a manifestation that the namespace having
not been defined (Step 4b above), so make sure the OAI compact node definition has been added to the fedora-node-types.cnd file or however you have found to add the definition is correct.
The default values appearing instead of properties you have defined would mean the properties are not available or defined incorrectly.
Configuring the OAI-PMH provider
The OAI-Provider relies on 4 properties being present in the main repository for the IDENTIFY verb. Those properties are:
oai:repositoryName
oai:description
oai:version
oai:adminEmail
These properties have to populated manually for now, using the following sparql-update queries:
INSERT {<> oai:repositoryName "exciting repository name here"}
INSERT {<> oai:description "exciting description here"}
INSERT {<> oai:adminEmail "your.email@here.org"}
(oai:version is populated by the software itself, so it should be the software build version)
If one or more of the properties are missing, the OAI provider should use the built-in values:
oai:repositoryName: "Fedora 4"
oai:description: "An example repository description"
oai:version: <whatever the software version is>
oai:adminAddress: "admin@example.com"