Verwenden Sie zum Konfigurieren von WebSphere eXtreme Scale eine ObjectGrid-XML-Deskriptordatei
und die API "ObjectGrid".
In den folgenden Abschnitten werden XML-Beispieldateien bereitgestellt, um verschiedene Konfigurationen zu veranschaulichen.
Jedes Element und Attribut der XML-Datei wird definiert. Verwenden Sie das ObjectGrid-XML-Deskriptorschema, um die
XML-Deskriptordatei zu erstellen. Ein Beispiel zum XML-Schema für den ObjectGrid-Deskriptors finden Sie
im Abschnitt Datei objectGrid.xsd.
Es wird eine geänderte Version der ursprünglichen Datei
companyGrid.xml verwendet.
Die folgende Datei
companyGridSingleMap.xml gleicht der Datei
companyGrid.xml. Die Datei
companyGridSingleMap.xml
hat eine einzige Map, und die Datei
companyGrid.xml hat vier Maps.
Die Elemente und Attribute der Datei sind im Anschluss an das Beispiel detailliert beschrieben.
<?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="CompanyGrid">
<backingMap name="Customer"/>
</objectGrid>
</objectGrids>
</objectGridConfig>
Element "objectGridConfig"
Das Element "objectGridConfig"
ist das Ausgangselement der XML-Datei. Schreiben Sie dieses Element
in Ihrem eXtreme-Scale-XML-Dokument, wie im vorherigen Beispiel gezeigt.
Dieses Element
konfiguriert den Namespace der Datei und die Schemaposition.
Das Schema ist in der Datei
objectGrid.xsd definiert.
- Anzahl der Vorkommen: 1
- Untergeordnete Elemente: objectGrids und backingMapPluginCollections
Element "objectGrids"
Das Element "objectGrids"
ist ein Container für alle objectGrid-Elemente. In der Datei
companyGridSingleMap.xml enthält das Element
"objectGrids" ein einziges ObjectGrid mit dem Namen "CompanyGrid".
- Anzahl der Vorkommen: 1 oder mehr
- Untergeordnetes Element: objectGrid
Element "objectGrid"
Verwenden Sie das Element "objectGrid", um ein ObjectGrid zu definieren.
Jedes Attribut im Element "objectGrid" entspricht einer Methode in der Schnittstelle
ObjectGrid.
- Anzahl der Vorkommen: 1 bis viele
- Untergeordnete Elemente: bean, backingMap, und querySchema
Attribute- name
- Gibt den Namen an, der dem ObjectGrid zugeordnet wird. Die XML-Validierung schlägt fehl, wenn dieses Attribut fehlt.
(Erforderlich)
- securityEnabled
- Wenn Sie dieses Attribut auf true setzen, wird die Sicherheit auf ObjectGrid-Ebene aktiviert, woraufhin die Zugriffberechtigungen
für die Daten in der Map aktiviert werden.
Der Standardwert ist true.
(Optional)
- authorizationMechanism
- Legt den Berechtigungsmechanismus für das Element fest. Sie können das Attribut auf einen der folgenden Werte
setzen: AUTHORIZATION_MECHANISM_JAAS oder AUTHORIZATION_MECHANISM_CUSTOM.
Der Standardwert ist AUTHORIZATION_MECHANISM_JAAS.
Sie müssen das Attribut securityEnabled auf true setzen, damit das Attribut
authorizationMechanism wirksam wird.
(Optional)
- permissionCheckPeriod
- Gibt einen ganzzahligen Wert in Sekunden an, der angibt, wie oft die Berechtigung geprüft wird, die verwendet wird,
um einen Clientzugriff zuzulassen.
Der Standardwert ist 0. Wenn Sie das Attribut auf 0 setzen,
wird der Berechtigungsmechanismus (Java Authentication
and Authorization Service (JAAS) oder angepasste Berechtigung) bei jedem Aufruf der Methoden "get", "put", "update", "remove" und "evict" aufgefordert,
zu prüfen, ob das aktuelle Subject-Objekt berechtigt ist.
Ein Wert größer als 0 gibt die Anzahl an Sekunden an, für die eine Gruppe von Berechtigungen
zwischengespeichert wird, bevor sie zur Aktualisierung an den Berechtigungsmechanismus zurückgegeben wird.
Sie müssen das Attribut "securityEnabled" auf true setzen, damit das Attribut "permissionCheckPeriod"
wirksam wird. (Optional)
- txTimeout
- Gibt die Zeit in Sekunden an, die einer Transaktion für die Ausführung zugestanden wird.
Wenn eine Transaktion nicht innerhalb dieser Zeit abgeschlossen wird, wird sie
für Rollback markiert, und es wird eine Ausnahme des Typs TransactionTimeoutException ausgelöst.
Wenn Sie das Attribut auf den Wert 0 setzen, wird die Standardeinstellung von
10 Minuten als Transaktionszeitlimit verwendet. (Optional)
- entityMetadataXMLFile
- Gibt den Pfad zur XML-Entitätsdeskriptordatei an, die das Entitätsschema definiert.
Definieren Sie Entitäten vor dem Start des Katalogservers, so dass jede Entität an eine BackingMap gebunden werden kann.
- Für ein relatives Verzeichnis: Geben Sie die Position relativ zur Position
der Datei objectgrid.xml an.
- Für einen absoluten Pfad: Geben Sie die Position mit einem URL-Format an, wie z. B.
file:// oder http://.
(Optional)
<objectGrid
(1) name="objectGridName"
(2) securityEnabled="true" | "false"
(3) authorizationMechanism="AUTHORIZATION_MECHANISM_JASS" | "AUTHORIZATION_MECHANISM_CUSTOM"
(4) permissionCheckPeriod="permission_check_period"
(5) txTimeout="seconds"
(6) entityMetadataXMLFile="URL"
/>
Im folgenden Beispiel demonstriert die Datei
companyGridObjectGridAttr.xml
eine Methode zum Konfigurieren der Attribute eines Element "objectGrid".
Die Sicherheit wird aktiviert, der Berechtigungsmechanismus wird auf
"JAAS" gesetzt, und das Intervall für die Berechtigungsprüfung wird auf 45 Sekunden gesetzt.
Außerdem registriert die Datei Entitäten, weil ein Attribut "entityMetadataXMLFile" angegeben wird.
<?xml version="1.0" encoding="UTF-8"?>
<objectGridConfig xmlnc: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="CompanyGrid" securityEnabled="true"
authorizationMechanism="AUTHORIZATION_MECHANISM_JASS"
permissionCheckPeriod="45"
entityMetadataXMLFile="companyGridEntities.xml">
<backingMap name="Customer"/>
</objectGrid>
</objectGrids>
</objectGridConfig>
Das folgende Codebeispiel veranschaulicht den programmgesteuerten
Ansatz, um dieselbe Konfiguration wie mit der Datei
companyGridObjectGridAttr.xml aus dem vorherigen Beispiel
zu erhalten.
ObjectGridManager objectGridManager = ObjectGridManagerFactory.getObjectGridManager();
ObjectGrid companyGrid = objectGridManager.createObjectGrid("CompanyGrid", false);
companyGrid.setSecurityEnabled();
companyGrid.setAuthorizationMechanism(SecurityConstants.AUTHORIZATION_MECHANISM_JAAS);
companyGrid.setPermissionCheckPeriod(45);
companyGrid.registerEntities(new URL("file:companyGridEntities.xml"));
Element "backingMap"
Das Element "backingMap" wird verwendet, um eine
BackingMap-Instanz in einem ObjectGrid zu definieren. Jedes der Attribute im Element "backingMap" entspricht einer Methode in der Schnittstelle "BackingMap". Einzelheiten finden Sie in
Schnittstelle "BackingMap".
- Anzahl der Vorkommen: 0 bis viele
- Untergeordnetes Element: timeBasedDBUpdate
Attribute- name
- Gibt den Namen an, der der backingMap-Instanz zugeordnet wird. Die XML-Validierung schlägt fehl, wenn dieses Attribut fehlt.
(Erforderlich)
- readOnly
- Definiert eine BackingMap-Instanz mit Lese-/Schreibzugriff, wenn Sie den Wert false für das
Attribut angeben. Wenn Sie den Wert true für das Attribut angeben, ist die BackingMap-Instanz schreibgeschützt.
(Optional)
- template
- Gibt an, ob dynamische Maps verwendet werden können. Setzen Sie dieses Attribut auf true, wenn die
BackingMap-Map eine Schablonen-Map ist. Schablonen-Maps können verwendet werden, um Maps nach dem Start von
ObjectGrid dynamisch zu starten. Aufrufe der Methode "Session.getMap(String)" führen zur Erstellung dynamischer Maps, wenn der an die Methode
übergebene Name dem regulären Ausdruck entspricht, der im Namensattribut der BackingMap angegeben ist.
Der Standardwert ist false. (Optional)
- pluginCollectionRef
- Gibt eine Referenz auf ein backingMapPluginCollection-Plug-in an.
Der Wert dieses Attributs muss mit dem Attribut "ID" eines backingMapCollection-Plug-ins übereinstimmen.
Die Validierung schlägt fehl, wenn keine übereinstimmende ID vorhanden ist. Setzen Sie das Attribut, um
BackingMap-Plug-ins wiederzuverwenden.
(Optional)
- numberOfBuckets
- Gibt die Anzahl der für die BackingMap-Instanz zu verwendenden Buckets an.
Die BackingMap-Instanz verwendet eine Hash-Tabelle für ihre Implementierung.
Wenn mehrere Einträge in der BackingMap vorhanden sind, kann durch mehr Buckets eine bessere Leistung erzielt werden, weil das Risiko von
Kollisionen mit zunehmender Anzahl an Buckets sinkt.
Werden zusätzliche Buckets verwendet, sind auch mehr gemeinsame Zugriffe möglich.
Geben Sie den Wert 0 an, um den nahen Cache in einem Client zu inaktivieren, wenn
die Kommunikation mit eXtreme Scale über Fernzugriff erfolgt.
Wenn Sie das Attribut für einen Client auf 0 setzen, definieren Sie den Wert nur in der
ObjectGrid-XML-Deskriptordatei für Clientkorrekturwerte. (Optional)
- preloadMode
- Legt den Modus für vorheriges Laden (Preload) fest, wenn ein Loader-Plug-in für diese BackingMap-Instanz definiert ist.
Der Standardwert ist false. Wenn Sie das Attribut auf
true setzen, wird die Methode "Loader.preloadMap(Session,
BackingMap)" asynchron aufgerufen. Andernfalls wird die Methode beim Laden von Daten blockiert, so dass der Cache bis zum Abschluss des Preload-Prozesses nicht verfügbar ist.
Der Preload-Prozess findet während der Initialisierung statt.
(Optional)
- lockStrategy
- Gibt an, ob der interne Sperrenmanager verwendet wird, wenn eine Transaktion auf einen Map-Eintrag zugreift.
Setzen Sie dieses Attribut auf einen der folgenden drei Werte:
OPTIMISTIC, PESSIMISTIC oder NONE. Der Standardwert ist OPTIMISTIC.
(Optional)
Die optimistische Sperrstrategie wird gewöhnlich verwendet, wenn eine Map kein Loader-Plug-in hat,
wenn hauptsächlich Leseoperationen und weniger Schreib- und Aktualisierungsoperationen in der Map durchgeführt werden und wenn
das Sperren nicht vom Persistenzmanager, der eXtreme Scale als Nebencache verwendet, oder von der Anwendung
übernommen wird.
Eine exklusive Sperre wird für einen Map-Eintrag angefordert, der bei der Festschreibung eingefügt, aktualisiert oder entfernt wird.
Die Sperre stellt sicher, dass die Versionsinformationen von anderen Transaktionen nicht geändert werden können,
während die Transaktion, die festgeschrieben wird, eine optimistische Versionsprüfung durchführt.
Die pessimistische Sperrstrategie wird gewöhnlich für eine Map verwendet, die kein Loader-Plug-in hat, und wenn
das Sperren nicht von einem Persistenzmanager, der eXtreme Scale als Nebencache verwendet,
von einem Loader-Plug-in oder von der Anwendung übernommen wird.
Die pessimistische Sperrstrategie wird verwendet, wenn bei der optimistischen Sperrstrategie
zu häufig Fehler auftreten, weil Aktualisierungstransaktionen für denselben Map-Eintrag zu häufig kollidieren.
Die Strategie ohne Sperren zeigt an, dass der interne Sperrenmanager nicht benötigt wird.
Die Steuerung des gemeinsamen Zugriffs erfolgt außerhalb von eXtreme Scale durch den Persistenzmanager, der
eXtreme Scale als Nebencache verwendet, durch die Anwendung oder durch das Loader-Plug-in, das Datenbanksperren
für die Steuerung des gemeinsamen Zugriffs verwendet.
Weitere Informationen finden Sie in
Sperrenmanager.
- numberOfLockBuckets
- Legt die Anzahl der Sperr-Buckets fest, die vom Sperrenmanager für die BackingMap-Instanz verwendet werden.
Setzen Sie das Attribut "lockStrategy" auf OPTIMISTIC oder PESSIMISTIC,
um einen Sperrenmanager für die BackingMap-Instanz zu erstellen.
Der Sperrenmanager verwendet eine Hash-Tabelle, um die Einträge zu verfolgen, die von einer oder mehreren
Transaktionen gesperrt werden.
Wenn viele Einträge vorhanden sind, kann durch mehr Buckets eine bessere Leistung erzielt werden, weil das Risiko von
Kollisionen mit zunehmender Anzahl an Buckets sinkt.
Werden zusätzliche Buckets verwendet, sind auch mehr gemeinsame Zugriffe möglich.
Setzen Sie das Attribut "lockStrategy" auf NONE, um anzugeben, dass die BackingMap-Instanz keinen
Sperrenmanager verwendet.
(Optional)
- lockTimeout
- Legt das Zeitlimit für Sperre fest, das vom Sperrenmanager für die BackingMap-Instanz verwendet wird.
Setzen Sie das Attribut "lockStrategy" auf OPTIMISTIC oder PESSIMISTIC,
um einen Sperrenmanager für die BackingMap-Instanz zu erstellen.
Zur Vermeidung von Deadlocks hat der Sperrenmanager ein Standardzeitlimit von
15 Sekunden. Bei Überschreitung des Zeitlimits wird eine Ausnahme des Typs "LockTimeoutException" ausgelöst.
Der Standardwert von 15 Sekunden ist für die meisten Anwendungen ausreichend, aber auf einem System mit hoher Belastung
können Zeitlimitüberschreitungen auch dann auftreten, wenn kein Deadlock vorhanden ist. Verwenden Sie das
Attribut "lockTimeout", um einen höheren als den Standardwert festzulegen, um falsche
Zeitlimitüberschreitungsausnahmen zu verhindern.
Setzen Sie das Attribut "lockStrategy" auf NONE, um anzugeben, dass die BackingMap-Instanz keinen
Sperrenmanager verwendet.
(Optional)
- CopyMode
- Gibt an, ob eine get-Operation eines Eintrags in der
BackingMap-Instanz den tatsächlichen Wert, eine Kopie des Werts oder einen Proxy für den Wert
zurückgibt.
Setzen Sie das Attribut "CopyMode" auf einen der folgenden fünf Werte:
- COPY_ON_READ_AND_COMMIT
- Der Standardwert ist COPY_ON_READ_AND_COMMIT.
Setzen Sie das Attribut auf COPY_ON_READ_AND_COMMIT, um sicherzustellen, dass eine Anwendung
keine Referenz auf das Wertobjekt verwendet, das in der BackingMap-Instanz enthalten ist.
Stattdessen arbeitet die Anwendung immer mit einer Kopie des Werts, der in der BackingMap-Instanz enthalten ist.
(Optional)
- COPY_ON_READ
- Setzen Sie das Attribut auf COPY_ON_READ, um eine im Vergleich mit dem Wert
COPY_ON_READ_AND_COMMIT höhere Leistung zu erzielen, indem der Kopiervorgang bei der Festschreibung einer Transaktion umgangen wird.
Zur Gewährleistung der Integrität der BackingMap-Daten stellt die Anwendung sicher, dass jede Referenz
auf einen Eintrag nach der Festschreibung der Transaktion gelöscht wird.
Durch die Festlegung dieses Werts wird eine Methode "ObjectMap.get"
aufgerufen, die eine Kopie des Werts an Stelle einer Referenz auf den Wert zurückgibt,
was sicherstellt, dass Änderungen, die von der Anwendung am Wert vorgenommen werden,
erst dann für das BackingMap-Element wirksam werden, wenn die Transaktion festgeschrieben wird.
- COPY_ON_WRITE
- Setzen Sie das Attribut auf COPY_ON_WRITE, um eine im Vergleich mit dem Wert
COPY_ON_READ_AND_COMMIT bessere Leistung zu erzielen, in dem der Kopiervorgang
beim ersten Aufruf der Methode "ObjectMap.get" für einen bestimmten Schlüssel durch eine Transaktion umgangen wird.
Stattdessen gibt die Methode "ObjectMap.get" einen Proxy für den Wert an Stelle einer Referenz auf das Wertobjekt zurück.
Der Proxy stellt sicher, dass keine Kopie des Werts erstellt wird, sofern die Anwendung nicht eine Methode
"set" für die Wertschnittstelle aufruft.
- NO_COPY
- Setzen Sie das Attribut auf den Wert NO_COPY, um einer Anwendung zu ermöglichen, ein Wertobjekt,
das mit einer Methode "ObjectMap.get" abgerufen wird, nie zu ändern, um so Leistungsverbesserungen zu erzielen.
Setzen Sie das Attribut für Maps, die Entitäten der EntityManager-API zugeordnet sind, auf NO_COPY.
- COPY_TO_BYTES
- Setzen Sie das Attribut auf COPY_TO_BYTES, um den Speicherbedarf für komplexe Objekttypen
zu verringern und die Leistung zu verbessern, wenn das Kopieren des Objekts durch Serialisierung vorgenommen werden soll.
Wenn ein Objekt nicht klonbar ist oder kein angepasstes ObjectTransformer-Plug-in mit einer
effizienten Methode "copyValue" bereitgestellt wird, wird der Standardkopiermechanismus verwendet, um das Objekt
zu serialisieren und zu dekomprimieren und die Kopie zu erstellen.
Bei der Einstellung COPY_TO_BYTES wird die Dekomprimierung bei einer reinen Leseoperation und die Serialisierung
bei einer reinen Festschreibungsoperation durchgeführt.
Weitere Einzelheiten zu diesen Einstellungen finden Sie in Kopiermodus optimieren.
- valueInterfaceClassName
- Gibt eine Klasse an, die erforderlich ist, wenn Sie das Attribut "CopyMode" auf
COPY_ON_WRITE setzen. Dieses Attribut wird für alle anderen Modi ignoriert.
Beim Wert COPY_ON_WRITE wird ein Proxy verwendet, wenn die Methode
"ObjectMap.get" aufgerufen wird. Der Proxy stellt sicher, dass keine Kopie des Werts erstellt wird, sofern
die Anwendung keine set-Methode in der Klasse aufruft, die mit dem Attribut "valueInterfaceClassName" angegeben ist.
(Optional)
- copyKey
- Gibt an, ob eine Kopie des Schlüssels erforderlich ist, wenn ein Map-Eintrag erstellt wird.
Wenn das Schlüsselobjekt kopiert wird, kann die Anwendung dasselbe Schlüsselobjekt für jede
ObjectMap-Operation verwenden. Setzen Sie das Attribut auf true, um das Schlüsselobjekt zu kopieren, wenn ein Map-Eintrag erstellt wird.
Der Standardwert ist false. (Optional)
- nullValuesSupported
- Setzen Sie das Attribut auf true, um Nullwerte in der
ObjectMap zu unterstützen. Wenn Nullwerte unterstützt werden, bedeutet eine get-Operation, die null zurückgibt, dass der Wert null ist oder dass die
Map den an die Methode übergebenen Schlüssel nicht enthält.
Der Standardwert ist true. (Optional)
- ttlEvictorType
- Gibt an, wie die Verfallszeit eines BackingMap-Eintrags berechnet wird.
Setzen Sie dieses Attribut auf einen der folgenden Werte: CREATION_TIME, LAST_ACCESS_TIME, LAST_UPDATE_TIME
oder NONE. Der Wert CREATION_TIME zeigt an, dass die Verfallszeit eines Eintrags
die Summe aus Erstellungszeit des Eintrags und Wert des Attributs "timeToLive" ist.
Der Wert LAST_ACCESS_TIME zeigt an, dass die Verfallszeit eines Eintrags die Summe aus
letzter Zugriffszeit des Eintrags (unabhängig davon, ob der Eintrag aktualisiert oder nur gelesen wurde)
und Wert des Attributs "timeToLive" ist.
Der Wert LAST_UPDATE_TIME zeigt an, dass die Verfallszeit eines Eintrags die Summe aus
letzter Aktualisierungszeit des Eintrags und Wert des Attributs "timeToLive" ist.
Der Wert NONE (der Standardwert) zeigt an, dass ein Eintrag keine Verfallszeit hat und so lange
in der BackingMap-Instanz bleibt, bis die Anwendung den Eintrag explizit entfernt oder ungültig macht.
(Optional)
- timeToLive
- Gibt an, wie lange (in Sekunden) jeder Map-Eintrag existiert. Der Standardwert
0 bedeutet, dass der Map-Eintrag unbegrenzt bzw. so lange existiert, bis die Anwendung
den Eintrag explizit entfernt oder ungültig macht.
Andernfalls entfernt der TTL-Evictor den Map-Eintrag auf der Basis dieses Werts.
(Optional)
- viewRef
- Gibt an, dass die BackingMap eine Sicht-Map ist.
(Optional)
- writeBehind
- Gibt an, dass die Write-behind-Unterstützung mit Write-behind-Parametern
aktiviert ist. (Optional). Write-behind-Parameter setzen sich aus einer maximalen Aktualisierungszeit
und einer maximalen Anzahl an Schlüsselaktualisierungen zusammen.
Das Format des Write-behind-Parameters ist "[T(Zeit)][;][C(Zähler)]". Die Datenbank
wird aktualisiert, wenn eines der folgenden Ereignisse eintritt:
- Die maximale Aktualisierungszeit in Sekunden seit der letzten Aktualisierung ist abgelaufen.
- Die Anzahl verfügbarer Aktualisierungen in der Warteschlangen-Map hat die maximal zulässige Aktualisierungsanzahl erreicht.
Weitere Informationen finden Sie unter Write-behind-Caching.
Die Write-behind-Unterstützung
ist eine Erweiterung des Loader-Plug-ins, das Sie verwenden, um eXtreme Scale mit der Datenbank zu integrieren.
Sehen Sie sich beispielsweise die Informationen zur Konfiguration eines JPA-Loaders im Abschnitt
JPA-Loader konfigurieren an.
- evictionTriggers
- Legt die Typen zusätzlich zu verwendender Bereinigungs-Trigger fest. Alle Evictor (Bereinigungsprogramme)
für die BackingMap verwenden diese liste zusätzlicher Trigger.
Zur Vermeidung von Ausnahmen des Typs "IllegalStateException" muss dieses Attribut vor der Methode
"ObjectGrid.initialize()" aufgerufen werden. Beachten Sie auch, dass die Methode "ObjectGrid.getSession()"
die Methode "ObjectGrid.initialize()" implizit aufruft, falls die Methode noch nicht von der Anwendung aufgerufen wurde.
Einträge in der Trigger-Liste werden durch Semikolons getrennt.
Zu den aktuellen Bereinigungs-Triggern gehört MEMORY_USAGE_THRESHOLD.
(Optional)
<backingMap
(1) name="objectGridName"
(2) readOnly="true" | "false"
(3) template="true" | "false"
(4) pluginCollectionRef="reference to backingMapPluginCollection"
(5) numberOfBuckets="number of buckets"
(6) preloadMode="true" | "false"
(7) lockStrategy="OPTIMISTIC" | "PESSIMISTIC" | "NONE"
(8) numberOfLockBuckets="number of lock buckets"
(9) lockTimeout="lock timeout"
(10) copyMode="COPY_ON_READ_AND_COMMIT" | "COPY_ON_READ" | "COPY_ON_WRITE"
| "NO_COPY" | "COPY_TO_BYTES"
(11) valueInterfaceClassName="value interface class name"
(12) copyKey="true" | "false"
(13) nullValuesSupported="true" | "false"
(14) ttlEvictorType="CREATION_TIME" | "LAST_ACCESS_TIME" | "LAST_UPDATE_TIME" | NONE"
(15) timeToLive="time to live"
(16) streamRef="reference to a stream"
(17) viewRef="reference to a view"
(18) writeBehind="write-behind parameters"
(19) evictionTriggers="MEMORY_USAGE_THRESHOLD"
/>
Im folgenden Beispiel wird die Datei
companyGridBackingMapAttr.xml verwendet,
um eine BackingMap-Beispielkonfiguration zu veranschaulichen.
<?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="CompanyGrid">
<backingMap name="Customer" readOnly="true"
numberOfBuckets="641" preloadMode="false"
lockStrategy="OPTIMISTIC" numberOfLockBuckets="409"
lockTimeout="30" copyMode="COPY_ON_WRITE"
valueInterfaceClassName="com.ibm.websphere.samples.objectgrid.CounterValueInterface"
copyKey="true" nullValuesSupported="false"
ttlEvictorType="LAST_ACCESS_TIME" timeToLive="3000"/>
</objectGrid>
</objectGrids>
</objectGridConfig>
Der folgende Beispielcode demonstriert den programmgesteuerten
Ansatz, um dieselbe Konfiguration zu erhalten wie mit der Datei
companyGridBackingMapAttr.xml aus dem vorherigen Beispiel:
ObjectGridManager objectGridManager = ObjectGridManagerFactory.getObjectGridManager();
ObjectGrid companyGrid = objectGridManager.createObjectGrid("CompanyGrid", false);
BackingMap customerMap = companyGrid.defineMap("Customer");
customerMap.setReadOnly(true);
customerMap.setNumberOfBuckets(641);
customerMap.setPreloadMode(false);
customerMap.setLockStrategy(LockStrategy.OPTIMISTIC);
customerMap.setNumberOfLockBuckets(409);
customerMap.setLockTimeout(30);
// Wenn der Kopiermodus auf COPY_ON_WRITE gesetzt wird, ist eine Klasse "valueInterface" erforderlich.
customerMap.setCopyMode(CopyMode.COPY_ON_WRITE,
com.ibm.websphere.samples.objectgrid.CounterValueInterface.class);
customerMap.setCopyKey(true);
customerMap.setNullValuesSupported(false);
customerMap.setTtlEvictorType(TTLType.LAST_ACCESS_TIME);
customerMap.setTimeToLive(3000); // Lebensdauer (TTL) auf 50 Minuten setzen
Element "bean"
Verwenden Sie das Element "bean", um Plug-ins zu definieren.
Sie können Plug-ins objectGrid- und BackingMap-Elementen zuordnen.
- Anzahl der Vorkommen im Element "objectGrid": 0 bis viele
- Anzahl der Vorkommen im Element "backingMapPluginCollection": 0 bis viele
- Untergeordnetes Element: property
Attribute- id
- Gibt den Typ des zu erstellenden Plug-ins an. (Erforderlich)
- Die gültigen Plug-ins für eine Bean, die ein untergeordnetes Element des Elements "objectGrid" ist, sind in der folgenden Liste aufgeführt:
- TransactionCallback-Plug-in
- ObjectGridEventListener-Plug-in
- SubjectSource-Plug-in
- SubjectValidation-Plug-in
Die gültigen Plug-ins für eine Bean, die ein untergeordnetes Element des Elements "backingMapPluginCollection" ist, sind in der folgenden Liste aufgeführt:
- Loader-Plug-in
- ObjectTransformer-Plug-in
- OptimisticCallback-Plug-in
- Evictor-Plug-in
- MapEventListener-Plug-in
- MapIndex-Plug-in
- className
- Gibt den Namen der Klasse bzw. SpringBean an, die zum Erstellen des Plug-ins instanziiert werden soll.
Die Klasse muss die Schnittstelle für den Plug-in-Typ implementieren.
Wenn Sie beispielsweises ObjectGridEventListener als Wert für
das Attribut "id" angeben, muss der Wert des Attributs "className" auf eine Klasse verweisen, die die Schnittstelle
ObjectGridEventListener implementiert.
Das Attribut "className" oder "osgiService" ist erforderlich.
- osgiService
- Gibt den Namen des OSGi-Service an, der im OSGi-Service-Manager gesucht werden soll.
Wenn Sie das Eclipse-Equinox-OSGi-Framework mit dem Eclipse-Gemini- oder Apache-Aries-Blueprint-Container ausführen,
können Plug-ins mit einer OSGi-Blueprint-XML-Datei definiert werden. Die anderen Bean-Eigenschaften
werden gewöhnlich nicht verwendet, wenn ein osgiService-Name verwendet wird, da die Bean-Eigenschaften in der
Blueprint-Konfigurationsdatei konfiguriert werden.
Weitere Informationen finden Sie unter
OSGi-fähige Plug-ins mit der ObjectGrid-XML-Deskriptordatei konfigurieren. Das Attribut "className" oder "osgiService" ist erforderlich.
<bean
(1) id="TransactionCallback" | "ObjectGridEventListener" |"SubjectSource" |
"SubjectValidation" | "Loader" | "ObjectTransformer" |
"OptimisticCallback" | "Evictor" | "MapEventListener" | "MapIndexPlugin"
(2) className="class name" | "(spring)bean name"
/>
Im folgenden Beispiel wird die Datei companyGridBean.xml
verwendet, um zu veranschaulichen, wie Plug-ins mit dem Element "bean" konfiguriert werden.
Ein ObjectGridEventListener-Plug-in wird dem ObjectGrid "CompanyGrid" hinzugefügt.
Das Attribut "className" für dieses Element "bean" ist "com.ibm.websphere.objectgrid.plugins.builtins.TranPropListener".
Diese Klasse implementiert die Schnittstelle "com.ibm.websphere.objectgrid.plugins.ObjectGridEventListener".
Es wird auch ein BackingMap-Plug-in in der Datei
companyGridBean.xml definiert. Ein Evictor-Plug-in wird der BackingMap-Instanz "Customer"
hinzugefügt. Das die Bean-ID "Evictor" lautet, muss das Attribut "className" eine Klasse angeben,
die die Schnittstelle "com.ibm.websphere.objectgrid.plugins.Evictor" implementiert.
Die Klasse "com.ibm.websphere.objectgrid.plugins.builtins.LRUEvictor" implementiert diese Schnittstelle.
Die BackingMap referenziert ihre Plug-ins über das Attribut "pluginCollectionRef".
<?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="CompanyGrid">
bean id="ObjectGridEventListener"
className="com.ibm.websphere.objectgrid.plugins.builtins.TranPropListener"/>
<backingMap name="Customer"
pluginCollectionRef="customerPlugins"/>
</objectGrid>
</objectGrids>
<backingMapPluginCollections>
<backingMapPluginCollection id="customerPlugins">
<bean id="Evictor"
className="com.ibm.websphere.objectGrid.plugins.builtins.LRUEvictor/>
</backingMapPluginCollection>
</backingMapPluginCollections>
</objectGridConfig>
Das folgende Codebeispiel veranschaulicht den programmgesteuerten
Ansatz, um dieselbe Konfiguration wie mit der Datei
companyGridBean.xml aus dem vorherigen Beispiel
zu erhalten.
ObjectGridManager objectGridManager = ObjectGridManagerFactory.getObjectGridManager();
ObjectGrid companyGrid = objectGridManager.createObjectGrid("CompanyGrid", false);
TranPropListener tranPropListener = new TranPropListener();
companyGrid.addEventListener(tranPropListener);
BackingMap customerMap = companyGrid.defineMap("Customer");
Evictor lruEvictor = new com.ibm.websphere.objectgrid.plugins.builtins.LRUEvictor();
customerMap.setEvictor(lruEvictor);
Weitere Einzelheiten
zur Verwendung von Plug-ins finden Sie im Abschnitt
Übersicht über Plug-ins.
Element "property"
Verwenden Sie das Element "property", um Plug-ins Eigenschaften hinzuzufügen.
Der Name der Eigenschaft muss einer set-Methode
in der von der übergeordneten Bean referenzierten Klasse entsprechen.
- Anzahl der Vorkommen: 0 bis viele
- Untergeordnetes Element: Ohne
Attribute- name
- Der Name der Eigenschaft.
Der Wert, der diesem Attribut zugeordnet wird, muss einer set-Methode
in der Klasse entsprechen, die mit dem Attribut "className" der übergeordneten Bean angegeben wird.
Wenn Sie beispielsweise das Attribut "className" der Bean auf
com.ibm.MyPlugin setzen und der angegebene Name der Eigenschaft
size lautet, muss die Klasse com.ibm.MyPlugin eine Methode
setSize enthalten.
(Erforderlich)
- type
- Gibt den Typ der Eigenschaft an. Der Typ wird an die set-Methode übergeben, die mit dem Attribut "name" angegeben wurde.
Die gültigen Werte sind primitive Java-Typen, ihre java.lang-Pendants und java.lang.String. Die Attribute
"name" und "type" müssen einer Methodensignatur im Attribut "className" der Bean entsprechen.
Wenn Sie beispielsweise den Namen size und den Typ
int festlegen, muss eine Methode "setSize(int)" in der Klasse vorhanden sein, die mit dem
Attribut "className" für die Bean angegeben wurde.
(Erforderlich)
- value
- Gibt den Wert der Eigenschaft an. Dieser Wert wird in den mit dem Attribut "type" angegebenen Typ konvertiert und anschließend
als Parameter in dem Aufruf der set-Methode verwendet, die mit den Attributen "name" und "type" angegeben wurde.
Der Wert dieses Attributs wird nicht validiert.
(Erforderlich)
- description
- Beschreibt die Eigenschaft. (Optional)
<bean
(1) name="name"
(2) type="java.lang.String" | "boolean" | "java.lang.Boolean" | "int" |
"java.lang.Integer" | "double" | "java.lang.Double" | "byte" |
"java.lang.Byte" | "short" | "java.lang.Short" | "long" |
"java.lang.Long" | "float" | "java.lang.Float" | "char" |
"java.lang.Character"
(3) value="value"
(4) description="description"
/>
Im folgenden Beispiel wird die Datei
companyGridProperty.xml verwendet, um zu veranschaulichen, wie einer Bean ein Element
"property" hinzugefügt wird. In diesem Beispiel
wird einem Evictor eine Eigenschaft mit dem Namen "maxSize" und dem Typ "int" hinzugefügt.
Die Klasse
com.ibm.websphere.objectgrid.plugins.builtins.LRUEvictor
hat eine Methodensignatur, die der Methode
setMaxSize(int) entspricht.
Der ganzzahlige Wert 499 wird an die Methode
setMaxSize(int) in der Klasse
com.ibm.websphere.objectgrid.plugins.builtins.LRUEvictor übergeben.
<?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="CompanyGrid">
<backingMap name="Customer"
pluginCollectionRef="customerPlugins"/>
</objectGrid>
</objectGrids>
<backingMapPluginCollections>
<backingMapPluginCollection id="customerPlugins">
<bean id="Evictor"
className="com.ibm.websphere.objectGrid.plugins.builtins.LRUEvictor>
<property name="maxSize" type="int" value="449"
description="The maximum size of the LRU Evictor"/>
</bean>
</backingMapPluginCollection>
</backingMapPluginCollections>
</objectGridConfig>
Das folgende Codebeispiel veranschaulicht den programmgesteuerten
Ansatz, um dieselbe Konfiguration wie mit der Datei
companyGridProperty.xml aus dem vorherigen Beispiel
zu erhalten.
ObjectGridManager objectGridManager = ObjectGridManagerFactory.getObjectGridManager();
ObjectGrid companyGrid = objectGridManager.createObjectGrid("CompanyGrid", false);
BackingMap customerMap = companyGrid.defineMap("Customer");
LRUEvictor lruEvictor = new com.ibm.websphere.objectgrid.plugins.builtins.LRUEvictor();
// Wenn Sie die XML-Datei verwenden würden, würde die hinzugefügte
// Eigenschaft den folgenden Aufruf bewirken
lruEvictor.setMaxSize(449);
customerMap.setEvictor(lruEvictor);
Element "backingMapPluginsCollections"
Das Element "backingMapPluginsCollections"
ist ein Container für alle backingMapPluginCollection-Elemente.
In der Datei
companyGridProperty.xml aus dem vorherigen Beispiel
enthält das Element "backingMapPluginCollections" ein einziges Element "backingMapPluginCollection" mit der ID
customerPlugins.
- Anzahl der Vorkommen: 0 bis 1
- Untergeordnetes Element: backingMapPluginCollection
Element "backingMapPluginCollection"
Das Element "backingMapPluginCollection"
definiert die BackingMap-Plug-ins und wird über das Attribut
id identifiziert.
Geben Sie das Attribut "pluginCollectionRef" an, um die Plug-ins zu referenzieren.
Wenn Sie mehrere BackingMap-Plug-ins auf ähnliche Weise konfigurieren, kann jede BackingMap
dasselbe Element "backingMapPluginCollection" referenzieren.
- Anzahl der Vorkommen: 0 bis viele
- Untergeordnetes Element: bean
Attribute- id
- Identifiziert die backingMapPluginCollection und wird vom
Attribut "pluginCollectionRef" des Elements "backingMap" referenziert. Jede ID muss eindeutig sein.
Wenn der Wert des Attributs "pluginCollectionRef" nicht mit der ID eines der backingMapPluginCollection-Elemente
übereinstimmt, schlägt die XML-Validierung fehl.
Es können beliebig viele backingMap-Elemente ein einziges Element "backingMapPluginCollection" referenzieren.
(Erforderlich)
<backingMapPluginCollection
(1) id="id"
/>
Im folgenden Beispiel wird die Datei
companyGridCollection.xml verwendet, um zu veranschaulichen, wie das Element "backingMapPluginCollection" verwendet wird.
In dieser Datei verwendet die BackingMap "Customer" die backingMapPluginCollection "customerPlugins", um die
BackingMap "Customer" mit einem LRUEvictor-Plug-in zu konfigurieren. Die BackingMaps "Item"
und "OrderLine" referenzieren die backingMapPluginCollection "collection2".
Für diese BackingMaps ist jeweils ein LFUEvictor-Plug-in definiert.
<?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="CompanyGrid">
<backingMap name="Customer"
pluginCollectionRef="customerPlugins"/>
<backingMap name="Item" pluginCollectionRef="collection2"/>
<backingMap name="OrderLine"
pluginCollectionRef="collection2"/>
<backingMap name="Order"/>
</objectGrid>
</objectGrids>
<backingMapPluginCollections>
<backingMapPluginCollection id="customerPlugins">
<bean id="Evictor"
className="com.ibm.websphere.objectGrid.plugins.builtins.LRUEvictor/>
</backingMapPluginCollection>
<backingMapPluginCollection id="collection2">
<bean id="Evictor"
className="com.ibm.websphere.objectgrid.plugins.builtins.LFUEvictor/>
<bean id="OptimisticCallback"
className="com.ibm.websphere.samples.objectgrid.EmployeeOptimisticCallBackImpl"/>
</backingMapPluginCollection>
</backingMapPluginCollections>
</objectGridConfig>
Das folgende Codebeispiel veranschaulicht den programmgesteuerten
Ansatz, um dieselbe Konfiguration wie mit der Datei
companyGridCollection.xml aus dem vorherigen Beispiel
zu erhalten.
ObjectGridManager objectGridManager = ObjectGridManagerFactory.getObjectGridManager();
ObjectGrid companyGrid = objectGridManager.createObjectGrid("CompanyGrid", false);
BackingMap customerMap = companyGrid .defineMap("Customer");
LRUEvictor customerEvictor = new LRUEvictor();
customerMap.setEvictor(customerEvictor);
BackingMap itemMap = companyGrid.defineMap("Item");
LFUEvictor itemEvictor = new LFUEvictor();
itemMap.setEvictor(itemEvictor);
BackingMap orderLineMap = companyGrid.defineMap("OrderLine");
LFUEvictor orderLineEvictor = new LFUEvictor();
orderLineMap.setEvictor(orderLineEvictor);
BackingMap orderMap = companyGrid.defineMap("Order");
Element "querySchema"
Das Element "querySchema" definiert Beziehungen zwischen BackingMaps und
identifiziert den Objekttyp jeder Map.
Diese Informationen werden von ObjectQuery verwendet, um Zeichenfolgen in der Abfragesprache
in Map-Zugriffsaufrufe zu übersetzen.
Weitere
Informationen finden Sie im Abschnitt ObjectQuery-Schema konfigurieren.- Anzahl der Vorkommen: 0 bis 1
- Untergeordnete Elemente: mapSchemas, relationships
Element "mapSchemas"
Jedes Element "querySchema" hat ein einziges Element
"mapSchemas", das ein oder mehrere mapSchema-Elemente enthält.
- Anzahl der Vorkommen: 1
- Untergeordnetes Element: mapSchema
Element "mapSchema"
Ein Element "mapSchema" definiert den Typ der Objekte, die in einer
BackingMap gespeichert werden, und enthält Anweisungen zum Zugriff auf die Daten.
- Anzahl der Vorkommen: 1 oder mehr
- Untergeordnetes Element: Ohne
Attribute- mapName
- Gibt den Namen der BackingMap an, die dem Schema hinzugefügt werden soll. (Erforderlich)
- valueClass
- Gibt den Typ des Objekts an, der im Wertabschnitt der BackingMap gespeichert wird. (Erforderlich)
- primaryKeyField
- Gibt den Namen des Primärschlüsselattributs im Attribut "valueClass" an.
Der Primärschlüssel muss auch im Schlüsselabschnitt der BackingMap gespeichert werden.
(Optional)
- accessType
- Gibt an, wie die Abfragesteuerkomponente die persistenten Daten in den valueClass-Objektinstanzen
überwacht und auf diese zugreift. Wenn Sie das Attribut auf den Wert FIELD setzen,
werden die Klassenfelder überwacht und dem Schema hinzugefügt. Wenn Sie das Attribut auf den Wert
PROPERTY setzen, werden die Attribute, die den get- und is-Methoden zugeordnet sind, verwendet.
Der Standardwert ist PROPERTY.
(Optional)
<mapSchema
(1) mapName="backingMapName"
(2) valueClass="com.mycompany.OrderBean"
(3) primaryKeyField="orderId"
(4) accessType="PROPERTY" | "FIELD"
/>
Im folgenden Beispiel wird die Datei
companyGridQuerySchemaAttr.xml verwendet, um eine Beispielkonfiguration für mapSchema
zu veranschaulichen:
<?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="CompanyGrid">
<backingMap name="Order"/>
<backingMap name="Customer"/>
<querySchema>
<mapSchemas>
<mapSchema mapName="Order"
valueClass="com.mycompany.OrderBean"
primaryKeyField="orderNumber"
accessType="FIELD"/>
<mapSchema mapName="Customer"
valueClass="com.mycompany.CustomerBean"
primaryKeyField="id"
accessType="FIELD"/>
</mapSchemas>
</querySchema>
</objectGrid>
</objectGrids>
</objectGridConfig>
Das folgende Codebeispiel veranschaulicht den programmgesteuerten
Ansatz, um dieselbe Konfiguration wie mit der Datei
companyGridQuerySchemaAttr.xml aus dem vorherigen Beispiel
zu erhalten.
ObjectGridManager objectGridManager = ObjectGridManagerFactory.getObjectGridManager();
ObjectGrid companyGrid = objectGridManager.createObjectGrid("CompanyGrid", false);
companyGrid.defineMap("Order");
companyGrid.defineMap("Customer");
// Schema definieren
QueryConfig queryCfg = new QueryConfig();
queryCfg.addQueryMapping(new QueryMapping(
"Order", OrderBean.class.getName(), "orderNumber", QueryMapping.FIELD_ACCESS));
queryCfg.addQueryMapping(new QueryMapping(
"Customer", CustomerBean.class.getName(), "id", QueryMapping.FIELD_ACCESS));
companyGrid.setQueryConfig(queryCfg);
Element "relationships"
Jedes Element "querySchema" hat kein
oder ein Element "relationships", das eine oder mehrere Elemente "relationship" enthält.
- Anzahl der Vorkommen: 0 oder 1
- Untergeordnetes Element: relationship
Element "relationship"
Ein Element "relationship"
definiert die Beziehung zwischen zwei BackingMaps sowie die Attribute im Attribut "valueClass", die für die Beziehungsbindung verwendet werden.
- Anzahl der Vorkommen: 1 oder mehr
- Untergeordnetes Element: Ohne
Attribute- source
- Gibt den Namen der valueClass der Quellenseite einer Beziehung an.
(Erforderlich)
- target
- Gibt den Namen der valueClass der Zielseite einer Beziehung an.
(Erforderlich)
- relationField
- Gibt den Namen des Attributs in der Quellen-valueClass an, die auf das Ziel verweist.
(Erforderlich)
- invRelationField
- Gibt den Namen des Attributs in der Ziel-valueClass an, die auf die Quelle verweist.
Wenn Sie dieses Attribut nicht angeben, ist die Beziehung unidirektional.
(Optional)
<mapSchema
(1) source="com.mycompany.OrderBean"
(2) target="com.mycompany.CustomerBean"
(3) relationField="customer"
(4) invRelationField="orders"
/>
Im folgenden Beispiel wird die Datei
companyGridQuerySchemaWithRelationshipAttr.xml verwendet, um eine mapSchema-Beispielkonfiguration zu veranschaulichen, die eine
bidirektionale Beziehung enthält.
<?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="CompanyGrid">
<backingMap name="Order"/>
<backingMap name="Customer"/>
<querySchema>
<mapSchemas>
<mapSchema mapName="Order"
valueClass="com.mycompany.OrderBean"
primaryKeyField="orderNumber"
accessType="FIELD"/>
<mapSchema mapName="Customer"
valueClass="com.mycompany.CustomerBean"
primaryKeyField="id"
accessType="FIELD"/>
</mapSchemas>
<relationships>
<relationship
source="com.mycompany.OrderBean"
target="com.mycompany.CustomerBean"
relationField="customer"/>
invRelationField="orders"/>
</relationships>
</querySchema>
</objectGrid>
</objectGrids>
</objectGridConfig>
Das folgende Codebeispiel veranschaulicht den programmgesteuerten
Ansatz, um dieselbe Konfiguration wie mit der Datei
companyGridQuerySchemaWithRelationshipAttr.xml aus dem vorherigen Beispiel
zu erhalten.
ObjectGridManager objectGridManager = ObjectGridManagerFactory.getObjectGridManager();
ObjectGrid companyGrid = objectGridManager.createObjectGrid("CompanyGrid", false);
companyGrid.defineMap("Order");
companyGrid.defineMap("Customer");
// Schema definieren
QueryConfig queryCfg = new QueryConfig();
queryCfg.addQueryMapping(new QueryMapping(
"Order", OrderBean.class.getName(), "orderNumber", QueryMapping.FIELD_ACCESS));
queryCfg.addQueryMapping(new QueryMapping(
"Customer", CustomerBean.class.getName(), "id", QueryMapping.FIELD_ACCESS));
queryCfg.addQueryRelationship(new QueryRelationship(
OrderBean.class.getName(), CustomerBean.class.getName(), "customer", "orders"));
companyGrid.setQueryConfig(queryCfg);
Element "stream"
Das Element "stream" stellt einen Datenstrom für die Abfragesteuerkomponente für Datenströme dar.
Jedes Attribut des Elements "stream" entspricht einer Methode in der Schnittstelle "StreamMetadata".
- Anzahl der Vorkommen: 1 bis viele
- Untergeordnetes Element: basic
Attribute- name
- Gibt den Namen des Datenstroms an. Die Validierung schlägt fehl, wenn dieses Attribut nicht angegeben wird.
(Erforderlich)
- valueClass
- Gibt den Klassentyp des Werts an, der in der ObjectMap des Datenstroms gespeichert wird.
Der Klassentyp wird verwendet, um das Objekt in Datenstromereignisse zu konvertieren und um eine
SQL-Anweisung zu generieren, wenn die Anweisung nicht angegeben ist.
(Erforderlich)
- sql
- Gibt die SQL-Anweisung des Datenstroms an. Wenn Sie diese Eigenschaft nicht angeben,
wird eine Datenstrom-SQL durch Reflexion der Attribute bzw. Zugriffsmethoden
im Attribut "valueClass" bzw. durch Verwendung der Tupelattribute der Entitätsmetadaten generiert.
(Optional)
- access
- Gibt den Typ für den Zugriff auf die Attribute der Wertklasse an.
Wenn Sie das Attribut auf den Wert FIELD setzen, werden die Attribute durch Java-Reflexion direkt
aus den Feldern abgerufen.
Andernfalls werden Zugriffsmethoden für das Lesen der Attribute verwendet.
Der Standardwert ist PROPERTY.
(Optional)
<stream
(1) name="streamName"
(2) valueClass="streamMapClassType"
(3) sql="streamSQL create stream stockQuote
keyed by t ( transactionvolume INTEGER, price DECIMAL (9,2), issue VARCHAR(100) );"
(4) access="PROPERTY" | "FIELD"
/>
Element "view"
Das Element "view" stellt eine Datenstromabfragesicht dar.
Jedes Element "stream" entspricht einer Methode in der Schnittstelle "ViewMetadata".
- Anzahl der Vorkommen: 1 bis viele
- Untergeordnete Elemente: basic, ID
Attribute- name
- Gibt den Namen der Sicht an. Die Validierung schlägt fehl, wenn dieses Attribut nicht angegeben wird.
(Erforderlich)
- sql
- Gibt die SQL des Datenstroms an, die die Sichtkonvertierung definiert.
Die Validierung schlägt fehl, wenn dieses Attribut nicht angegeben wird.
(Erforderlich)
- valueClass
- Gibt den Klassentyp des Werts an, der in dieser Sicht der ObjectMap gespeichert wird.
Der Klassentyp wird verwendet, um die Sichtereignisse in das richtige Tupelformat zu konvertieren, das mit diesem Klassentyp kompatibel ist.
Wenn Sie den Klassentyp nicht angeben, wird ein Standardformat gemäß den Spaltendefinition
in Stream Processing Technology Structured
Query Language (SPTSQL) verwendet. Wenn Entitätsmetadaten für diese Sicht-Map definiert sind, verwenden Sie das Attribut "valueClass" nicht.
(Optional)
- access
- Gibt den Typ für den Zugriff auf die Attribute der Wertklasse an.
Wenn Sie den Zugriffstyp auf FIELD setzen, werden die Spaltenwerte durch Java-Reflexion direkt
aus den Feldern abgerufen.
Andernfalls werden Zugriffsmethoden für das Definieren der Attribute verwendet.
Der Standardwert ist PROPERTY.
(Optional)
<view
(1) name="viewName"
(2) valueClass="viewMapValueClass"
(3) sql="viewSQL CREATE VIEW last5MinuteAvgPrice AS
SELECT issue, avg(price) as totalVolume
FROM (SELECT * FROM stockQuote FETCH LATEST 5 MINUTES) group by issue;"/>
(4) access="PROPERTY" | "FIELD"
/>
Element "basic"
Das Element "basic" wird verwendet, um eine Zuordnung des
Attributnamens in der Wertklasse bzw. den Entitätsmetadaten zu der in SPTSQL definierten Spalte zu definieren.
- Anzahl der Vorkommen: 0 bis viele
- Untergeordnetes Element: Ohne
<basic
(1) name="attributeName"
(2) column="columnName"
/>
Element "id"
Das Element "id" wird für die Zuordnung eines Schlüsselattributs verwendet.
- Anzahl der Vorkommen: 0 bis viele
- Untergeordnetes Element: Ohne
<id
(1) name="idName"
(2) column="columnName"
/>