Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
15 changed files
with
745 additions
and
13 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,129 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<beans xmlns="http://www.springframework.org/schema/beans" | ||
xmlns:amq="http://activemq.apache.org/schema/core" | ||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd | ||
http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd"> | ||
|
||
<!-- | ||
The <broker> element is used to configure the ActiveMQ broker. | ||
--> | ||
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost"> | ||
|
||
<!-- | ||
For better performances use VM cursor and small memory limit. | ||
For more information, see: | ||
http://activemq.apache.org/message-cursors.html | ||
Also, if your producer is "hanging", it's probably due to producer flow control. | ||
For more information, see: | ||
http://activemq.apache.org/producer-flow-control.html | ||
--> | ||
|
||
<destinationPolicy> | ||
<policyMap> | ||
<policyEntries> | ||
<policyEntry topic=">" producerFlowControl="true"> | ||
<!-- The constantPendingMessageLimitStrategy is used to prevent | ||
slow topic consumers to block producers and affect other consumers | ||
by limiting the number of messages that are retained | ||
For more information, see: | ||
http://activemq.apache.org/slow-consumer-handling.html | ||
--> | ||
<pendingMessageLimitStrategy> | ||
<constantPendingMessageLimitStrategy limit="1000"/> | ||
</pendingMessageLimitStrategy> | ||
</policyEntry> | ||
<policyEntry queue=">" producerFlowControl="true" memoryLimit="1mb"> | ||
<!-- Use VM cursor for better latency | ||
For more information, see: | ||
http://activemq.apache.org/message-cursors.html | ||
<pendingQueuePolicy> | ||
<vmQueueCursor/> | ||
</pendingQueuePolicy> | ||
--> | ||
</policyEntry> | ||
</policyEntries> | ||
</policyMap> | ||
</destinationPolicy> | ||
|
||
|
||
<!-- | ||
The managementContext is used to configure how ActiveMQ is exposed in | ||
JMX. By default, ActiveMQ uses the MBean server that is started by | ||
the JVM. For more information, see: | ||
http://activemq.apache.org/jmx.html | ||
--> | ||
<managementContext> | ||
<managementContext createConnector="false"/> | ||
</managementContext> | ||
|
||
<!-- | ||
Configure message persistence for the broker. The default persistence | ||
mechanism is the KahaDB store (identified by the kahaDB tag). | ||
For more information, see: | ||
http://activemq.apache.org/persistence.html | ||
--> | ||
<persistenceAdapter> | ||
<kahaDB directory="ActiveMQ/kahadb"/> | ||
</persistenceAdapter> | ||
|
||
|
||
<!-- | ||
The systemUsage controls the maximum amount of space the broker will | ||
use before slowing down producers. For more information, see: | ||
http://activemq.apache.org/producer-flow-control.html | ||
If using ActiveMQ embedded - the following limits could safely be used: | ||
--> | ||
|
||
<systemUsage> | ||
<systemUsage> | ||
<memoryUsage> | ||
<memoryUsage limit="20 mb"/> | ||
</memoryUsage> | ||
<storeUsage> | ||
<storeUsage limit="1 gb"/> | ||
</storeUsage> | ||
<tempUsage> | ||
<tempUsage limit="100 mb"/> | ||
</tempUsage> | ||
</systemUsage> | ||
</systemUsage> | ||
|
||
|
||
<!-- | ||
The transport connectors expose ActiveMQ over a given protocol to | ||
clients and other brokers. For more information, see: | ||
http://activemq.apache.org/configuring-transports.html | ||
--> | ||
<transportConnectors> | ||
<!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB --> | ||
<transportConnector name="openwire" | ||
uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireformat.maxFrameSize=104857600" | ||
/> | ||
</transportConnectors> | ||
|
||
<!-- destroy the spring context on shutdown to stop jetty --> | ||
<shutdownHooks> | ||
<bean xmlns="http://www.springframework.org/schema/beans" | ||
class="org.apache.activemq.hooks.SpringContextHook"/> | ||
</shutdownHooks> | ||
|
||
</broker> | ||
|
||
<!-- | ||
Enable web consoles, REST and Ajax APIs and demos | ||
Take a look at ${ACTIVEMQ_HOME}/conf/jetty.xml for more details | ||
<import resource="jetty.xml"/> | ||
--> | ||
</beans> |
85 changes: 85 additions & 0 deletions
85
fcrepo-webapp/src/main/resources/config/fedora-node-types.cnd
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
|
||
/* | ||
* JCR node types for use with Fedora | ||
*/ | ||
<jcr = 'http://www.jcp.org/jcr/1.0'> | ||
<nt = 'http://www.jcp.org/jcr/nt/1.0'> | ||
<mix = 'http://www.jcp.org/jcr/mix/1.0'> | ||
|
||
/* | ||
* Friend-of-a-Friend | ||
*/ | ||
<foaf = 'http://xmlns.com/foaf/0.1/'> | ||
|
||
/* | ||
* Generic Fedora namespace | ||
*/ | ||
<fedora = 'info:fedora'> | ||
|
||
/* | ||
* Dublin Core. See: | ||
* | ||
* http://dublincore.org/documents/dcmi-namespace/ | ||
*/ | ||
<dc = 'http://purl.org/dc/terms/'> | ||
|
||
|
||
/* | ||
* Any Fedora resource. | ||
*/ | ||
[fedora:resource] > mix:created, mix:lastModified, mix:lockable, mix:versionable mixin abstract | ||
|
||
/* | ||
* Temporary for us until we better understand the use of jcr:created. | ||
*/ | ||
- fedora:created (STRING) COPY | ||
|
||
/* | ||
* See: http://dublincore.org/documents/dcmi-terms/#elements-identifier | ||
*/ | ||
- dc:identifier (STRING) multiple COPY | ||
|
||
|
||
/* | ||
* A Fedora object. | ||
*/ | ||
[fedora:object] > fedora:resource, nt:folder mixin | ||
|
||
|
||
/* | ||
* A Fedora datastream. | ||
*/ | ||
[fedora:datastream] > fedora:resource, nt:file mixin | ||
|
||
/* | ||
* The MIMEtype of this datastream. | ||
*/ | ||
- fedora:contentType (STRING) COPY | ||
|
||
|
||
/* | ||
* Indicates that this resource is owned. | ||
*/ | ||
[fedora:owned] mixin noquery | ||
|
||
/* | ||
* The owner of this owned resource. | ||
*/ | ||
- fedora:owner (REFERENCE) COPY | ||
|
||
/* | ||
* For use for when the owner-entities are not managed in the repository. | ||
*/ | ||
- fedora:ownerId (STRING) COPY | ||
|
||
|
||
/* | ||
* Some entity that owns a Fedora resource. | ||
*/ | ||
[fedora:owner] primaryitem foaf:name | ||
|
||
/* | ||
* The name of this owner. | ||
*/ | ||
- foaf:name (STRING) multiple COPY | ||
|
91 changes: 91 additions & 0 deletions
91
fcrepo-webapp/src/main/resources/config/infinispan_configuration.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
<infinispan xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
xsi:schemaLocation="urn:infinispan:config:5.2 http://www.infinispan.org/schemas/infinispan-config-5.2.xsd" | ||
xmlns="urn:infinispan:config:5.2"> | ||
|
||
<global> | ||
<!-- Defines the global settings shared by all caches --> | ||
<transport> | ||
<properties> | ||
<property name="configurationFile" value="${fcrepo.modeshape.ispn.configuration:jgroups-infinispan.xml}"/> | ||
</properties> | ||
</transport> | ||
</global> | ||
|
||
<default> | ||
<!-- | ||
Defines the default behavior for all caches, including those created dynamically (e.g., when a | ||
repository uses a cache that doesn't exist in this configuration). | ||
--> | ||
<clustering mode="distribution"> | ||
<sync/> | ||
<l1 enabled="false" lifespan="0" onRehash="false"/> | ||
<hash numOwners="1"/> | ||
<stateTransfer fetchInMemoryState="true"/> | ||
</clustering> | ||
</default> | ||
|
||
<namedCache name="FedoraRepository"> | ||
<!-- | ||
Our Infinispan cache needs to be transactional. However, we'll also configure it to | ||
use pessimistic locking, which is required whenever applications will be concurrently | ||
updating nodes within the same process. If you're not sure, use pessimistic locking. | ||
--> | ||
<clustering mode="distribution"> | ||
<sync/> | ||
<l1 enabled="false" lifespan="0" onRehash="false"/> | ||
<hash numOwners="1"/> | ||
<stateTransfer fetchInMemoryState="true"/> | ||
</clustering> | ||
|
||
<eviction maxEntries="100" strategy="LRU" threadPolicy="DEFAULT"/> | ||
|
||
<transaction | ||
transactionManagerLookupClass="org.infinispan.transaction.lookup.GenericTransactionManagerLookup" | ||
transactionMode="TRANSACTIONAL" lockingMode="PESSIMISTIC"/> | ||
<!-- | ||
Define the cache loaders (i.e., cache stores). Passivation is false because we want *all* | ||
data to be persisted, not just what doesn't fit into memory. Shared is false because there | ||
are no other caches sharing this file store. We set preload to false for lazy loading; | ||
may be improved by preloading and configuring eviction. | ||
We can have multiple cache loaders, which get chained. But we'll define just one. | ||
--> | ||
|
||
<loaders passivation="false" shared="false" preload="true"> | ||
|
||
<!-- | ||
The 'fetchPersistentState' attribute applies when this cache joins the cluster; the value doesn't | ||
really matter to us in this case. See the documentation for more options. | ||
--> | ||
<loader class="org.infinispan.loaders.file.FileCacheStore" fetchPersistentState="false" | ||
purgeOnStartup="true"> | ||
<!-- See the documentation for more configuration examples and flags. --> | ||
<properties> | ||
<!-- We have to set the location where we want to store the data. --> | ||
<property name="location" value="target/FedoraRepository/storage"/> | ||
|
||
<property name="fsyncMode" value="perWrite"/> | ||
</properties> | ||
<!-- This repository isn't clustered, so we could set up the SingletonStore. | ||
singletonStore enabled="true" pushStateWhenCoordinator="true" pushStateTimeout="20000"/> | ||
--> | ||
<!-- | ||
We could use "write-behind", which actually writes to the file system asynchronously, | ||
which can improve performance as seen by the JCR client. | ||
Plus changes are coalesced, meaning that if multiple changes are enqueued for the | ||
same node, only the last one is written. (This is good much of the time, but not | ||
always.) | ||
<async enabled="true" flushLockTimeout="15000" threadPoolSize="5"/> | ||
--> | ||
</loader> | ||
<!-- fall back to other nodes if we don't have this data --> | ||
<loader class="org.infinispan.loaders.cluster.ClusterCacheLoader" | ||
fetchPersistentState="false" purgeOnStartup="false"> | ||
<properties> | ||
<property name="remoteCallTimeout" value="20000"/> | ||
</properties> | ||
|
||
</loader> | ||
</loaders> | ||
</namedCache> | ||
</infinispan> |
Oops, something went wrong.