...
The indexer is configured using Spring. Here is a sample configuration fragment showing two three workers (saving RDF to disk, persisting jcr/xml, and syncing to a Jena Fuseki triplestore) and the framework for listening to events and connecting them with the workers:
No Format |
---|
<!-- Worker #1: Copy object RDF to a Fuseki triplestore using SPARQL Update --> <bean id="sparqlUpdate" class="org.fcrepo.indexer.SparqlIndexer"> <!-- base URL for triplestore subjects, PID will be appended --> <property name="prefix" value="http://localhost:${test.port:8080}/rest/objects/"/> <property name="queryBase" value="http://localhost:3030/test/query"/> <property name="updateBase" value="http://localhost:3030/test/update"/> <property name="formUpdates"> <value type="java.lang.Boolean">false</value> </property> </bean> <!-- Worker #2: Save object RDF to timestamped files on disk --> <bean id="fileSerializer" class="org.fcrepo.indexer.FileSerializer"> <property name="path" value="./target/test-classes/fileSerializer/"/> </bean> <!-- jcr/xml persistence Indexer --> <bean id="jcrXmlPersist" class="org.fcrepo.indexer.persistence.JcrXmlPersistenceIndexer"> <constructor-arg value="${fcrepo.jcrxml.storage:fcrepo4-jcrxml}" /> </bean> <!-- Main indexer class that processes events, gets RDF from the repository and calls the workers --> <bean id="indexerGroup" class="org.fcrepo.indexer.IndexerGroup"> <constructor-arg name="repositoryURL" value="http://${fcrepo.host:localhost}:${fcrepo.port:8080}${fcrepo.context:/}rest" /> <constructor-arg name="indexers"> <set> <ref bean="jcrXmlPersist"/> <ref bean="fileSerializer"/> <ref bean="sparqlUpdate"/> </set> </constructor-arg> <!-- If your Fedora instance requires authentication, enter the credentials here. Leave blank if your repo is open. --> <constructor-arg name="fedoraUsername" value="${fcrepo.username:}" /> <constructor-arg name="fedoraPassword" value="${fcrepo.password:}" /> </bean> <!-- ActiveMQ queue to listen for events --> <bean id="destination" class="org.apache.activemq.command.ActiveMQTopic"> <constructor-arg value="fedora" /> </bean> <!-- Message listener container to connect the JMS queue to the indexer --> <bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="connectionFactory" ref="connectionFactory"/> <property name="destination" ref="destination"/> <property name="messageListener" ref="indexerGroup" /> <property name="sessionTransacted" value="true"/> </bean> |
...