# # Proai Configuration # ================================ ############################## # Front-End OAI-PMH Behavior # ############################## # For multi-part OAI responses, this specifies the maximum time to wait # between requests before cleaning up the session. # proai.secondsBetweenRequests = 600 # The maximum number of records to include in each part of a # ListRecords response. # proai.incompleteRecordListSize = 250 # The maximum number of record headers to include in each part of a # ListIdentifiers response. # proai.incompleteIdentifierListSize = 500 # The maximum number of sets to include in each part of a # ListSets response. # proai.incompleteSetListSize = 500 ############################ # Back-End Update Behavior # ############################ # How often Proai should poll the driver for updates. # proai.driverPollSeconds = 120 # Set this to false to start the service without polling enabled. # Note: You can also change polling behavior while the service is running # by executing the following SQL against the database: # #
#     UPDATE rcAdmin SET pollingEnabled = 0 (or 1 to enable it)
# 
# # The value configured via this property will always be put into effect # when the service is started. # proai.driverPollingEnabled = true # The maximum number of worker threads to use while retrieving new/updated # OAI records from the driver. # proai.maxWorkers = 5 # How many requests each worker thread should make before returning the # batch to the database to be committed. # proai.maxWorkBatchSize = 10 # If a request of the driver for a specific record fails for any reason, # this is the maximum number of times that record should be automatically # retried before giving up on that record. If this is exceeded, the # record information will remain in the rcFailure table until it is dealt # with manually. # proai.maxFailedRetries = 3 # The maximum size the in-memory record commit queue is allowed to reach. # If this threshold is reached, it means that worker threads are returning # results faster than they can be committed to the database by the commit # thread. If this occurs, workers will have to wait until more items have # been committed before they can add any more to the queue. # proai.maxCommitQueueSize = 120 # The maximum number of record updates (from the in-memory commit queue) # that should be committed to the database at one time. # proai.maxRecordsPerTransaction = 60 # Whether to run schema validation during the update process. # This defaults to true. # proai.validateUpdates = true ########################## # File Storage Locations # ########################## # The directory where cache files should be stored. This will be created # if it doesn't exist. IMPORTANT: You should change this from /tmp to # a permanent directory of your choosing. The default value here is # just used for testing. # proai.cacheBaseDir = /tmp/proai/cache # Where OAI-PMH session data will be stored when needed. # This directory will be created at startup if it doesn't already exist. # # Each session consists of a series of small data files in a uniquely-named # subdirectory beneath this one. They are automatically created and # removed as needed. # proai.sessionBaseDir = /tmp/proai/sessions # Where to store schema files if validation is enabled. # proai.schemaDir = /tmp/proai/schemas ################################## # Primary Database Configuration # ################################## # The JDBC connection URL for the database that will be used by the cache. # #

Embedded McKoi example:
# jdbc:mckoi:local://build/test/mckoi/mckoi.conf?create_or_boot=true #

#

Local McKoi example:
# jdbc:mckoi://localhost/ #

#

Local MySQL example:
# jdbc:mysql://localhost/proai?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true #

#

Local Oracle example:
# jdbc:oracle:thin:@localhost:1521:proai #

#

Local Postgres example:
# jdbc:postgresql://localhost/proai #

# proai.db.url = jdbc:postgresql://localhost/proai # The class name of the JDBC driver appropriate for use # with the connection url. The appropriate library must be # in the classpath. # #

Mckoi example:
# proai.db.driverClassName = com.mckoi.JDBCDriver #

#

MySQL example:
# proai.db.driverClassName = com.mysql.jdbc.Driver #

#

Oracle example:
# proai.db.driverClassName = oracle.jdbc.driver.OracleDriver #

#

Postgres example:
# proai.db.driverClassName = org.postgresql.Driver #

# proai.db.driverClassName = org.postgresql.Driver # If using MySQL, this indicates whether to stream query results # one-at-a-time from the database to conserve memory. If unspecified, # this defaults to false. # #

# Background: For large repositories, MySQL's default behavior of reading # all results into memory can cause OutOfMemory errors in # Proai. If this value is set to true, memory requirements for Proai # will be lower, but query performance will suffer. For more detail, # please see the # Connector-J # Implementation Notes. #

# proai.db.mySQLResultTrickling = false # The database user. This user should already exist in the database # and must have permission to create, modify, and query tables. # proai.db.username = proai # The password for the database user. # proai.db.password = proai ################################### # Advanced Database Configuration # ################################### # The maxiumum number of connections from the pool that may be active # (leased) at once. If unspecified, this defaults to 8. # proai.db.maxActive = 16 # The maximum number of milliseconds to wait for a connection from the # pool if none are available. If unspecified, this defaults to -1, # which means "indefinite". # proai.db.maxWait = 5000 # proai.db.* # # Any other properties defined by the Apache commons-DBCP project # can be specified. See the full list (and documentation) at # http://jakarta.apache.org/commons/dbcp/configuration.html # # To use standard DBCP properties, just prefix them with "proai.db." # here. # proai.db.connection.* # # To use JDBC driver-specific properties (in DBCP, these # are called "connectionProperties"), prefix them with # "proai.db.connection.". # The Java class responsible for creating the database tables required # by Proai's record cache. # #

The name of the property should be the driverClassName of the JDBC # driver you're using, plus ".ddlConverter".

# com.mckoi.JDBCDriver.ddlConverter = proai.util.McKoiDDLConverter com.mysql.jdbc.Driver.ddlConverter = proai.util.MySQLDDLConverter oracle.jdbc.driver.OracleDriver.ddlConverter = proai.util.OracleDDLConverter org.postgresql.Driver.ddlConverter = proai.util.PostgresDDLConverter # Whether the database interprets backslashes in SQL strings as # escape characters. This is needed to that Proai can formulate # proper queries against the database. # #

The name of the property should be the driverClassName of the JDBC # driver you're using plus ".backslashIsEscape". If unspecified, # backslashIsEscape will be assumed true.

# com.mckoi.JDBCDriver.backslashIsEscape = true com.mysql.jdbc.Driver.backslashIsEscape = true oracle.jdbc.driver.OracleDriver.backslashIsEscape = false org.postgresql.Driver.backslashIsEscape = true ################################### # Fedora Driver: General Settings # ################################### # The class name of the proai.driver.OAIDriver implementation to use. # # This value should never need changing -- it just informs Proai that # we're using the Fedora driver. # proai.driverClassName = fedora.services.oaiprovider.FedoraOAIDriver # The class name of the fedora.services.oaiprovider.QueryFactory # implementation to use. # # This allows the OAI Provider to work with Fedora's Resource Index # whether it's backed by Kowari or MPTStore. If the RI uses Kowari, # the value here should be fedora.services.oaiprovider.ITQLQueryFactory # If it uses MPTStore, the value should be # fedora.services.oaiprovider.MPTQueryFactory # driver.fedora.queryFactory = fedora.services.oaiprovider.ITQLQueryFactory # The base URL of the Fedora repository to query and get records from. # driver.fedora.baseURL = http://localhost:8080/fedora/ # Identifies a Fedora user that has privileges to do a resource index # query via the risearch interface, and can get all needed disseminations # that represent OAI records in the Fedora repository. # driver.fedora.user = fedoraAdmin # Password for the Fedora user. # driver.fedora.pass = fedoraAdmin # When querying the resource index, the maximum number of seconds to # wait for the http connection to be established before giving up. # driver.fedora.queryConnectionTimeout = 30 # When querying the resource index, the maximum number of seconds of # socket inactivity to allow before giving up. # driver.fedora.querySocketTimeout = 600 # When getting xml data from Fedora, the maximum number of seconds to # wait for the http connection to be established before giving up. # driver.fedora.disseminationConnectionTimeout = 30 # When getting xml data from Fedora, the maximum number of seconds of # socket inactivity to allow before giving up. # driver.fedora.disseminationSocketTimeout = 120 # The location of the XML that should be used to respond to OAI # "Identify" requests. # # This can be any URL, but typically it points to a manually-created # datastream within the same Fedora repository that hosts the OAI records. # driver.fedora.identify = http://localhost:8080/fedora/get/demo:MyRepository/Identify.xml # The name of the RELS-EXT property whose value (a plain literal) # contains the OAI item ID for records that are provided by an object. # # A value for this property *must* exist in RELS-EXT before any of an # object's disseminations will be considered to be OAI records. # driver.fedora.itemID = http://www.openarchives.org/OAI/2.0/itemID ################################################ # Fedora Driver: Metadata Format Configuration # ################################################ # Metadata formats to make available. # # This is a space-delimited list of all formats provided, # identified by OAI metadata prefix. # driver.fedora.md.formats = oai_dc test_format formatX formatY # The location of the W3C schema for each format. # # Example property name: # driver.fedora.md.format.your_format.loc. # driver.fedora.md.format.oai_dc.loc = http://www.openarchives.org/OAI/2.0/oai_dc.xsd driver.fedora.md.format.test_format.loc = http://example.org/test_format.xsd driver.fedora.md.format.formatX.loc = http://example.org/formatX.xsd driver.fedora.md.format.formatY.loc = http://example.org/formatY.xsd # The namespace URI for each format. # # Example property name: # driver.fedora.md.format.your_format.uri. # driver.fedora.md.format.oai_dc.uri = http://www.openarchives.org/OAI/2.0/oai_dc/ driver.fedora.md.format.test_format.uri = http://example.org/test_format/ driver.fedora.md.format.formatX.uri = http://example.org/formatX/ driver.fedora.md.format.formatY.uri = http://example.org/formatY/ # The Fedora dissemination type for each format. # #

A Fedora dissemination type is a URI starting with # info:fedora/*/ and ending with a datastream ID (such as "DC"), # a Behavior Definition PID followed by "/methodName", # or a Behavior Definition PID followed by "/methodName?name=value".

# #

The dissType is the key to mapping an OAI metadata format to # a kind of Fedora dissemination. Here are a few examples:

# #
# info:fedora/*/DC                  ; identifies the "DC" datastream
#
# info:fedora/*/demo:1/getDC        ; identifies the "getDC" method of the 
#                                   ; demo:1 behavior definition
#
# info:fedora/*/demo:1/getMD?fmt=dc ; identifies the "getMD" method of the 
#                                   ; demo:1 behavior definition, when
#                                   ; invoked with the required "fmt"
#                                   ; parameter
# 
# # When the OAI provider queries Fedora for records in your_format, # it uses this special value to constrain the query to only those # disseminations that are in the expected format. # Thus, all records that the OAI provider considers to be in # your_format must have this dissemination type. # # Example property name: # driver.fedora.md.format.your_format.dissType. # driver.fedora.md.format.oai_dc.dissType = info:fedora/*/oai_dc driver.fedora.md.format.test_format.dissType = info:fedora/*/test_format driver.fedora.md.format.formatX.dissType = info:fedora/*/demo:OAIAdvancedItem-Service/getMetadata?format=x driver.fedora.md.format.formatY.dissType = info:fedora/*/demo:OAIAdvancedItem-Service/getMetadata?format=y # The Fedora dissemination type for each format. # # This optional property identifies the OAI "about" dissemination # type for your_format. If specified for your_format, then the OAI provider # will attempt to find disseminations of this type for each object # that has a matching your_format.dissType. If such a dissemination # is found, for that particular object, the information therein # will be used as the "about" metadata for the record. # # Example property name: # driver.fedora.md.format.your_format.about.dissType. # driver.fedora.md.format.oai_dc.about.dissType = info:fedora/*/about_oai_dc driver.fedora.md.format.formatX.about.dissType = info:fedora/*/demo:OAIAdvancedItem-Service/getMetadataAbout?format=x driver.fedora.md.format.formatY.about.dissType = info:fedora/*/demo:OAIAdvancedItem-Service/getMetadataAbout?format=y ############################################### # Fedora Driver: Set Membership Configuration # ############################################### # The name of the RELS-EXT property that indicates the unique setSpec # string of a Fedora object representing an OAI set. # This property must exist on any Fedora object that should # represent an OAI set. # driver.fedora.setSpec = http://www.openarchives.org/OAI/2.0/setSpec # The name of the RELS-EXT property that indicates the name of # a Fedora object representing an OAI set. # In addition to setSpec, this property must also exist on any # Fedora object that should represent an OAI set. # driver.fedora.setSpec.name = http://www.openarchives.org/OAI/2.0/setName # The dissemination type for the XML that describes a set. # If a dissemination of this type is available for a Fedora object # representing an OAI set, the content of the dissemination will # be used in ListSets responses. # driver.fedora.setSpec.desc.dissType = info:fedora/*/SetInfo.xml # The "triple pattern" identifying the path from objects to the # setsSpecs (short names) of sets they are members of. # #

The path must contain $item and $setSpec, with the $item # variable representing a Fedora object in the resource index, # and the $setSpec representing the setSpec name.

# driver.fedora.itemSetSpecPath = $item $set $set $setSpec ######################################### # Fedora Driver: MPTStore Configuration # ######################################### # The values below only need to be configured if using # MPTQueryFactory (Fedora's Resource Index is backed by MPTStore). # NOTE=. # The JDBC driver class for connecting to the MPTStore database. # driver.fedora.mpt.db.driverClassName = org.postgresql.Driver # The database-specific DDLGenerator to use for MPTStore. # driver.fedora.mpt.db.ddlGenerator = org.nsdl.mptstore.impl.postgres.PostgresDDLGenerator # The JDBC URL for connecting to the MPTStore database. # driver.fedora.mpt.jdbc.url = jdbc:postgresql://localhost/riTriples # The user to connect to the MPTStore database as. # driver.fedora.mpt.jdbc.user = fedoraAdmin # The MPTStore database user's password. # driver.fedora.mpt.jdbc.password = fedoraAdmin # This configuration value is necessary to initialize the MPTStore library, # and should not need to be changed. # driver.fedora.mpt.db.map = tmap # This configuration value is necessary to initialize the MPTStore library, # and should not need to be changed. # driver.fedora.mpt.db.prefix = t ######################################### # Fedora Driver: Advanced Configuration # ######################################### # driver.fedora.deleted # This is the name of the RELS-EXT predicate that indicates the state # of all records within the object. # #

The normal behavior is that the Fedora-controlled "state" property # of the dissemination (or datastream) itself indicates the oai deleted # status. This can be used to specify the status via any object # property, if desired.

# #driver.fedora.deleted = info:fedora/fedora-system:def/model#state