Anwendungen für die Verwendung von Arbeitsbereichen entwickeln
Anwendungen interagieren mit dem Arbeitsbereichsservice durch die Implementierung der Schnittstelle "UserWorkArea". Diese Schnittstelle definiert alle Methoden, die zum Erstellen, Bearbeiten und Beenden von Arbeitsbereichen verwendet werden.
Informationen zu diesem Vorgang
package com.ibm.websphere.workarea;
public interface UserWorkArea {
void begin(String name);
void complete() throws NoWorkArea, NotOriginator;
String getName();
String[] retrieveAllKeys();
void set(String key, java.io.Serializable value)
throws NoWorkArea, NotOriginator, PropertyReadOnly;
void set(String key, java.io.Serializable value, PropertyModeType mode)
throws NoWorkArea, NotOriginator, PropertyReadOnly;
java.io.Serializable get(String key);
PropertyModeType getMode(String key);
void remove(String key)
throws NoWorkArea, NotOriginator, PropertyFixed;
}
- NoWorkArea
- Diese Ausnahme wird ausgelöst, wenn für eine Anforderung ein zugeordneter Arbeitsbereich erforderlich ist, aber keiner vorhanden ist.
- NotOriginator
- Diese Ausnahme wird zurückgegeben, wenn eine Anforderung versucht, den Inhalt des importierten Arbeitsbereichs zu ändern.
- PropertyReadOnly
- Diese Ausnahme wird zurückgegeben, wenn eine Anforderung versucht, eine Eigenschaft mit dem Modus "Read-only" oder "Fixed read-only" zu ändern.
- PropertyFixed
- Diese Ausnahme wird von der Methode "Remove" zurückgegeben, wenn der angegebenen Eigenschaft ein Fixed-Modus zugeordnet ist.
Vorgehensweise
Beispiel
Arbeitsbereichsobjekttypen. Im folgenden Beispiel erstellt der Client einen Arbeitsbereich und fügt zwei Eigenschaften zum Arbeitsbereich hinzu: eine Eigenschaft zur Siteidentifizierung und eine Prioritätseigenschaft. Die Site-Angabe wird als schreibgeschützte Eigenschaft (nur Lesezugriff) festgelegt, d. h., der Client erlaubt es den Empfängern des Arbeitsbereichs nicht, diese Site-Angabe zu überschreiben. Diese Eigenschaft besteht aus dem Schlüssel "company" und aus einer statischen Instanz des Objekts SimpleSampleCompany. Die Prioritätseigenschaft besteht aus der Priorität des Schlüssels und aus einer statischen Instanz des Objekts SimpleSamplePriority. Die Objekttypen sind wie im folgenden Codebeispiel definiert:
public static final class SimpleSampleCompany {
public static final SimpleSampleCompany Main;
public static final SimpleSampleCompany NewYork_Sales;
public static final SimpleSampleCompany NewYork_Development;
public static final SimpleSampleCompany London_Sales;
public static final SimpleSampleCompany London_Development;
}
public static final class SimpleSamplePriority {
public static final SimpleSamplePriority Platinum;
public static final SimpleSamplePriority Gold;
public static final SimpleSamplePriority Silver;
public static final SimpleSamplePriority Bronze;
public static final SimpleSamplePriority Tin;
}
Anschließend ruft der Client ein fernes Objekt auf. Der Arbeitsbereich wird automatisch weitergegeben. Keine der Methoden des fernen Objekts verwendet ein Arbeitsbereichsargument. Auf der fernen Seite wird die Anforderung zunächst von der SimpleSampleBean bearbeitet. Die Bean liest die Eigenschaften zur Site-Identifizierung und Priorität aus dem Arbeitsbereich. Anschließend versucht die Bean gezielt, direkt in den importierten Arbeitsbereich zu schreiben und die schreibgeschützte Eigenschaft zur Site-Identifizierung zu überschreiben.
Die SimpleSampleBean beginnt erfolgreich einen verschachtelten Arbeitsbereich, in dem sie die Priorität des Clients überschreibt, und ruft dann eine andere Bean auf, die SimpleSampleBackendBean. Die SimpleSampleBackendBean liest die Eigenschaften aus dem Arbeitsbereich, die auch die im Client festgelegte Eigenschaft zur Site-Identifizierung und die in der SimpleSampleBean festgelegte Priorität umfassen. Schließlich beendet die SimpleSampleBean ihren verschachtelten Arbeitsbereich und schreibt auf der Basis der Eigenschaft zur Site-Identifizierung eine Nachricht. Anschließend wird die Bean zurückgegeben.
Work Area Partition Manager verwenden. Das nachfolgende Codebeispiel veranschaulicht die Verwendung der Schnittstelle des Work Area Partition Manager. Das Beispiel veranschaulicht, wie eine Arbeitsbereichspartition über das Programm erstellt und abgerufen wird. Beachten Sie, dass die programmgesteuerte Erstellung einer Arbeitsbereichspartition nur im Java-EE-Client (Java Platform, Enterprise Edition) unterstützt wird. Wenn Sie auf dem Server eine Arbeitsbereichspartition erstellen möchten, müssen Sie die Administrationskonsole verwenden. Im Artikel zum Service für Arbeitsbereichspartitionen finden Sie Informationen zu den Konfigurationsparametern für die Konfiguration einer Partition.
import com.ibm.websphere.workarea.WorkAreaPartitionManager;
import com.ibm.websphere.workarea.UserWorkArea;
import com.ibm.websphere.workarea.PartitionAlreadyExistsException;
import com.ibm.websphere.workarea.NoSuchPartitionException;
import java.lang.IllegalAccessError;
import java.util.Properties;
import javax.naming.InitialContext;
//Dieses Beispiel veranschaulicht, wie eine Instanz der
//WorkAreaPartitionManager-Implementierung abgerufen und zum Erstellen
//einer WorkArea-Partition sowie zum Abrufen einer Partition verwendet wird.
//ANMERKUNG: Das Erstellen einer Partition wie unten dargestellt, ist nur
//auf einem J2EE-Client möglich. Verwenden Sie, um eine Partition serverseitig
//zu erstellen, die WebSphere-Administrationskonsole. Das Abrufen einer
//WorkArea-Partition verläuft auf Client und Server gleich.
public class Example {
//Der Name der Partition, die erstellt/abgerufen werden soll
String partitionName = "myPartitionName";
//Der Name in Java Naming, an den die WorkAreaPartitionManager-Instanz gebunden ist
String jndiName = "java:comp/websphere/WorkAreaPartitionManager";
//Auf einem J2EE-Client erstellt ein Benutzer eine Partition wie folgt:
public UserWorkArea myCreate(){
//Variable zur Angabe der WorkAreaPartitionManager-Referenz
WorkAreaPartitionManager partitionManager = null;
//Instanz der WorkAreaPartitionManager-Implementierung abrufen
try {
InitialContext initialContext = new InitialContext();
partitionManager = (WorkAreaPartitionManager) initialContext.lookup(jndiName);
} catch (Exception e) { }
//Die Eigenschaften für die Konfiguration der Arbeitsbereichspartition festlegen
Properties props = new Properties();
props.put("maxSendSize","12345");
props.put("maxReceiveSize","54321");
props.put("Bidirectional","true");
props.put("DeferredAttributeSerialization","true");
//Variable zur Angabe der neu erstellten WorkArea-Partition
UserWorkArea myPartition = null;
try{
//Auf diese Weise wird eine Partition auf dem J2EE-Client erstellt. Verwenden
//Sie die WebSphere-Administrationskonsole, um eine WorkArea-Partition
//auf dem Server zu erstellen.
myPartition = partitionManager.createWorkAreaPartition(partitionName,props);
}
catch (PartitionAlreadyExistsException e){ }
catch (IllegalAccessException e){ }
return myPartition;
}
//. . . .
//Wenn Sie eine WorkArea-Partition zu einem späteren Zeitpunkt oder von einer
//anderen Klasse abrufen möchten, gehen Sie wie folgt vor (auf Client oder Server):
public UserWorkArea myGet(){
//Variable zur Angabe der WorkAreaPartitionManager-Referenz
WorkAreaPartitionManager partitionManager = null;
//Instanz der WorkAreaPartitionManager-Implementierung abrufen
try {
InitialContext initialContext = new InitialContext();
partitionManager = (WorkAreaPartitionManager) initialContext.lookup(jndiName);
} catch (Exception e) { }
//Variable zur Angabe der abgerufenen WorkArea-Partition
UserWorkArea myPartition = null;
try{
myPartition = partitionManager.getWorkAreaPartition(partitionName);
}catch(NoSuchPartitionException e){ }
return myPartition;
}
}
Nächste Schritte
Weitere Informationen zum Arbeitsbereich finden Sie im Paket "com.ibm.websphere.workarea" in der API-Dokumentation. Sie finden die generierte API-Dokumentation im Inhaltsverzeichnis des Information Center unter
.