OpenJPA-ObjectGrid-XML-Dateien müssen auf der Basis der Persistenzeinheit erstellt werden.
Im Folgenden sehen Sie eine Beispieldatei persistence.xml, die die Konfiguration einer Persistenzeinheit darstellt:
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="1.0">
<persistence-unit name="AnnuityGrid">
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
<class>com.ibm.wssvt.acme.annuity.common.bean.jpa.AnnuityPersistebleObject</class>
<class>com.ibm.wssvt.acme.annuity.common.bean.jpa.Annuity</class>
<class>com.ibm.wssvt.acme.annuity.common.bean.jpa.FixedAnnuity</class>
<class>com.ibm.wssvt.acme.annuity.common.bean.jpa.EquityAnnuity</class>
<class>com.ibm.wssvt.acme.annuity.common.bean.jpa.Payout</class>
<class>com.ibm.wssvt.acme.annuity.common.bean.jpa.Rider</class>
<class>com.ibm.wssvt.acme.annuity.common.bean.jpa.Payor</class>
<class>com.ibm.wssvt.acme.annuity.common.bean.jpa.Person</class>
<class>com.ibm.wssvt.acme.annuity.common.bean.jpa.AnnuityHolder</class>
<class>com.ibm.wssvt.acme.annuity.common.bean.jpa.Contact</class>
<class>com.ibm.wssvt.acme.annuity.common.bean.jpa.Address</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<!-- Database setting -->
<!-- enable cache -->
<property name="openjpa.DataCache"
value="com.ibm.websphere.objectgrid.openjpa.ObjectGridDataCache(objectGridName=Annuity,
objectGridType=EMBEDDED, maxNumberOfReplicas=4)" />
<property name="openjpa.RemoteCommitProvider" value="sjvm" />
<property name="openjpa.QueryCache"
value="com.ibm.websphere.objectgrid.openjpa.ObjectGridQueryCache()" />
</properties>
</persistence-unit>
</persistence>
Die Datei openjpa-objectGrid.xml wird verwendet, um die ObjectGrid-Konfiguration für die Typen EMBEDDED und EMBEDDED_PARTITION anzupassen. Es folgt die Datei openjpa-objectGrid.xml, die der Datei persistence.xml entspricht:
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<objectGridConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ibm.com/ws/objectgrid/config ../objectGrid.xsd"
xmlns="http://ibm.com/ws/objectgrid/config">
<objectGrids>
<objectGrid name="Annuity">
<backingMap name="com.ibm.wssvt.acme.annuity.common.bean.jpa.Annuity" readOnly="false" copyKey="false"
lockStrategy="NONE" copyMode="NO_COPY" evictionTriggers="MEMORY_USAGE_THRESHOLD"
pluginCollectionRef="com.ibm.wssvt.acme.annuity.common.bean.jpa.Annuity" />
<backingMap name="com.ibm.wssvt.acme.annuity.common.bean.jpa.Address" readOnly="false" copyKey="false"
lockStrategy="NONE" copyMode="NO_COPY" evictionTriggers="MEMORY_USAGE_THRESHOLD"
pluginCollectionRef="com.ibm.wssvt.acme.annuity.common.bean.jpa.Address" />
<backingMap name="com.ibm.wssvt.acme.annuity.common.bean.jpa.Payor" readOnly="false" copyKey="false"
lockStrategy="NONE" copyMode="NO_COPY" evictionTriggers="MEMORY_USAGE_THRESHOLD"
pluginCollectionRef="com.ibm.wssvt.acme.annuity.common.bean.jpa.Payor" />
<backingMap name="com.ibm.wssvt.acme.annuity.common.bean.jpa.Person" readOnly="false" copyKey="false"
lockStrategy="NONE" copyMode="NO_COPY" evictionTriggers="MEMORY_USAGE_THRESHOLD"
pluginCollectionRef="com.ibm.wssvt.acme.annuity.common.bean.jpa.Person" />
<backingMap name="com.ibm.wssvt.acme.annuity.common.bean.jpa.Contact" readOnly="false" copyKey="false"
lockStrategy="NONE" copyMode="NO_COPY" evictionTriggers="MEMORY_USAGE_THRESHOLD"
pluginCollectionRef="com.ibm.wssvt.acme.annuity.common.bean.jpa.Contact" />
<backingMap name="com.ibm.wssvt.acme.annuity.common.bean.jpa.AnnuityPersistebleObject"
readOnly="false" copyKey="false"
lockStrategy="NONE" copyMode="NO_COPY" evictionTriggers="MEMORY_USAGE_THRESHOLD"
pluginCollectionRef="com.ibm.wssvt.acme.annuity.common.bean.jpa.AnnuityPersistebleObject" />
<backingMap name="com.ibm.wssvt.acme.annuity.common.bean.jpa.Rider" readOnly="false" copyKey="false"
lockStrategy="NONE" copyMode="NO_COPY" evictionTriggers="MEMORY_USAGE_THRESHOLD"
pluginCollectionRef="com.ibm.wssvt.acme.annuity.common.bean.jpa.Rider" />
<backingMap name="com.ibm.wssvt.acme.annuity.common.bean.jpa.Payout" readOnly="false" copyKey="false"
lockStrategy="NONE" copyMode="NO_COPY" evictionTriggers="MEMORY_USAGE_THRESHOLD"
pluginCollectionRef="com.ibm.wssvt.acme.annuity.common.bean.jpa.Payout" />
<backingMap name="ObjectGridQueryCache" readOnly="false" copyKey="false"
lockStrategy="NONE" copyMode="NO_COPY" pluginCollectionRef="ObjectGridQueryCache"
evictionTriggers="MEMORY_USAGE_THRESHOLD" />
</objectGrid>
</objectGrids>
<backingMapPluginCollections>
<backingMapPluginCollection id="com.ibm.wssvt.acme.annuity.common.bean.jpa.Annuity">
<bean id="ObjectTransformer"
className="com.ibm.ws.objectgrid.openjpa.ObjectGridPCDataObjectTransformer" />
<bean id="Evictor" className="com.ibm.websphere.objectgrid.plugins.builtins.LRUEvictor">
</bean>
</backingMapPluginCollection>
<backingMapPluginCollection id="com.ibm.wssvt.acme.annuity.common.bean.jpa.Address">
<bean id="ObjectTransformer"
className="com.ibm.ws.objectgrid.openjpa.ObjectGridPCDataObjectTransformer" />
<bean id="Evictor" className="com.ibm.websphere.objectgrid.plugins.builtins.LRUEvictor">
</bean>
</backingMapPluginCollection>
<backingMapPluginCollection id="com.ibm.wssvt.acme.annuity.common.bean.jpa.Payor">
<bean id="ObjectTransformer"
className="com.ibm.ws.objectgrid.openjpa.ObjectGridPCDataObjectTransformer" />
<bean id="Evictor" className="com.ibm.websphere.objectgrid.plugins.builtins.LRUEvictor">
</bean>
</backingMapPluginCollection>
<backingMapPluginCollection id="com.ibm.wssvt.acme.annuity.common.bean.jpa.Person">
<bean id="ObjectTransformer"
className="com.ibm.ws.objectgrid.openjpa.ObjectGridPCDataObjectTransformer" />
<bean id="Evictor" className="com.ibm.websphere.objectgrid.plugins.builtins.LRUEvictor">
</bean>
</backingMapPluginCollection>
<backingMapPluginCollection id="com.ibm.wssvt.acme.annuity.common.bean.jpa.Contact">
<bean id="ObjectTransformer"
className="com.ibm.ws.objectgrid.openjpa.ObjectGridPCDataObjectTransformer" />
<bean id="Evictor" className="com.ibm.websphere.objectgrid.plugins.builtins.LRUEvictor">
</bean>
</backingMapPluginCollection>
<backingMapPluginCollection
id="com.ibm.wssvt.acme.annuity.common.bean.jpa.AnnuityPersistebleObject">
<bean id="ObjectTransformer"
className="com.ibm.ws.objectgrid.openjpa.ObjectGridPCDataObjectTransformer" />
<bean id="Evictor" className="com.ibm.websphere.objectgrid.plugins.builtins.LRUEvictor">
</bean>
</backingMapPluginCollection>
<backingMapPluginCollection id="com.ibm.wssvt.acme.annuity.common.bean.jpa.Rider">
<bean id="ObjectTransformer"
className="com.ibm.ws.objectgrid.openjpa.ObjectGridPCDataObjectTransformer" />
<bean id="Evictor" className="com.ibm.websphere.objectgrid.plugins.builtins.LRUEvictor">
</bean>
</backingMapPluginCollection>
<backingMapPluginCollection id="com.ibm.wssvt.acme.annuity.common.bean.jpa.Payout">
<bean id="ObjectTransformer"
className="com.ibm.ws.objectgrid.openjpa.ObjectGridPCDataObjectTransformer" />
<bean id="Evictor" className="com.ibm.websphere.objectgrid.plugins.builtins.LRUEvictor">
</bean>
</backingMapPluginCollection>
<backingMapPluginCollection id="ObjectGridQueryCache">
<bean id="MapIndexPlugin" className="com.ibm.websphere.objectgrid.plugins.index.HashIndex">
<property name="Name" type="java.lang.String"
value="QueryCacheKeyIndex" description="name of index"/>
<property name="POJOKeyIndex" type="boolean" value="true" description="POJO Key Index "/>
</bean>
<bean id="Evictor" className="com.ibm.websphere.objectgrid.plugins.builtins.LRUEvictor">
</bean>
</backingMapPluginCollection>
</backingMapPluginCollections>
</objectGridConfig>
Standardmäßig sind Entitäten Teil des L2-Caches. In den Entity-Klassen, die vom Caching ausgeschlossen werden müssen, können Sie die Annotation @DataCache(enabled=false) in der Entitätsklasse einfügen, die Sie vom L2-Cache ausschließen möchten.
import org.apache.openjpa.persistence.DataCache;
@Entity
@DataCache(enabled=false)
public class OpenJPACacheTest { ... }
Die Datei openjpa-objectGridDeployment.xml wird verwendet, um die Implementierungsrichtlinie anzupassen. Es folgt die Datei openjpa-objectGridDeployment.xml, die der Datei persistence.xml entspricht:
openjpa-objectGridDeployment.xml
<?xml version="1.0" encoding="UTF-8" ?>
<deploymentPolicy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ibm.com/ws/objectgrid/deploymentPolicy ../deploymentPolicy.xsd"
xmlns="http://ibm.com/ws/objectgrid/deploymentPolicy">
<objectgridDeployment objectgridName="Annuity">
<mapSet name="MAPSET_Annuity" numberOfPartitions="1" numInitialContainers="1"
minSyncReplicas="0" maxSyncReplicas="4" maxAsyncReplicas="0"
replicaReadEnabled="true">
<map ref="com.ibm.wssvt.acme.annuity.common.bean.jpa.Annuity" />
<map ref="com.ibm.wssvt.acme.annuity.common.bean.jpa.Address" />
<map ref="com.ibm.wssvt.acme.annuity.common.bean.jpa.Payor" />
<map ref="com.ibm.wssvt.acme.annuity.common.bean.jpa.Person" />
<map ref="com.ibm.wssvt.acme.annuity.common.bean.jpa.Contact" />
<map ref="com.ibm.wssvt.acme.annuity.common.bean.jpa.AnnuityPersistebleObject" />
<map ref="com.ibm.wssvt.acme.annuity.common.bean.jpa.Rider" />
<map ref="com.ibm.wssvt.acme.annuity.common.bean.jpa.Payout" />
<map ref="ObjectGridQueryCache" />
</mapSet>
</objectgridDeployment>
</deploymentPolicy>