Développement d'applications qui utilisent des zones de travail
Les applications interagissent avec le service WorkArea via l'implémentation de l'interface UserWorkArea. Cette interface définit toutes les méthodes permettant la création, la manipulation et l'achèvement de zones de travail.
Pourquoi et quand exécuter cette tâche
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
- Exception émise lorsqu'une demande requiert une zone de travail associée et qu'il n'en existe aucune.
- NotOriginator
- Exception émise lorsqu'une demande tente de manipuler le contenu d'une zone de travail importée.
- PropertyReadOnly
- Exception émise lorsqu'une demande tente de modifier une propriété en lecture seule ou en lecture seule fixe.
- PropertyFixed
- Exception émise par la méthode remove lorsque la propriété désignée comporte un des modes fixes.
Procédure
Exemple
Types d'objet de zone de travail. Dans l'exemple ci-dessous, le client crée une zone de travail et y insère deux propriétés : un identificateur de site et un priorité. L'identificateur de site est défini sous forme de propriété en lecture seule : le client n'autorise pas les destinataires de la zone de travail à remplacer l'identificateur de site. Cette propriété est constituée de la société clé et d'une instance statique d'un objet SimpleSampleCompany. La propriété est constituée de la priorité clé et d'une instance statique d'un objet SimpleSamplePriority. Les types d'objet sont définis comme suit dans l'exemple de code ci-dessous :
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;
}
Le client établit ensuite un appel sur un objet éloigné. La zone de travail est automatiquement propagée ; aucune des méthodes de l'objet éloigné n'utilise un argument de zone de travail. A l'extrémité distante, la demande est gérée par SimpleSampleBean, puis le bean lit d'abord les propriétés d'identificateur de site et de priorité à partir de la zone de travail. Le bean tente ensuite intentionnellement d'écrire directement dans la zone de travail importée et de remplacer la propriété d'identificateur de site en lecture seule , mais cette tentative échoue.
SimpleSampleBean crée avec succès une zone de travail imbriquée dans laquelle il remplace la priorité du client, puis appelle un autre bean, SimpleSampleBackendBean. SimpleSampleBackendBean lit les propriétés de la zone de travail qui contient l'identificateur de site défini sur le client et la priorité définie dans SimpleSampleBean. Finalement, SimpleSampleBean met fin à sa zone de travail imbriquée, écrit un message basé sur la propriété d'identificateur de site, puis revient.
Utilisation du gestionnaire de partition de zone de travail. L'exemple de code ci-dessous illustre l'utilisation de l'interface de gestion de partition de zone de travail (Work Area). Il indique comment créer et extraire par programme une partition Work Area. La création à l'aide d'un programme d'une partition Work Area ne peut s'effectuer qu'à partir d'un client Java EE (Java Platform, Enterprise Edition). Pour créer une partition Work Area sur le serveur, il convient d'utiliser la console d'administration. Pour connaître les paramètres disponibles pour configurer une partition, consultez l'article Service de partition Work Area.
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;
//This sample demonstrates how to retrieve an instance of the
//WorkAreaPartitionManager implementation and how to use that
//instance to create a WorkArea partition and retrieve a partition.
//NOTE: Creating a partition in the way listed is only available
//on a J2EE client. To create a partition on the server use the
//WebSphere administrative console. Retrieving a WorkArea
//partition is performed in the same way on both client and server.
public class Example {
//The name of the partition to create/retrieve
String partitionName = "myPartitionName";
//The name in java naming the WorkAreaPartitionManager instance is bound to
String jndiName = "java:comp/websphere/WorkAreaPartitionManager";
//On a J2EE client a user would create a partition as follows:
public UserWorkArea myCreate(){
//Variable to hold our WorkAreaPartitionManager reference
WorkAreaPartitionManager partitionManager = null;
//Get an instance of the WorkAreaPartitionManager implementation
try {
InitialContext initialContext = new InitialContext();
partitionManager = (WorkAreaPartitionManager) initialContext.lookup(jndiName);
} catch (Exception e) { }
//Set the properties to configure our WorkArea partition
Properties props = new Properties();
props.put("maxSendSize","12345");
props.put("maxReceiveSize","54321");
props.put("Bidirectional","true");
props.put("DeferredAttributeSerialization","true");
//Variable used to hold the newly created WorkArea Partition
UserWorkArea myPartition = null;
try{
//This is the way to create a partition on the J2EE client. Use the
//WebSphere Administrative Console to create a WorkArea Partition
//on the server.
myPartition = partitionManager.createWorkAreaPartition(partitionName,props);
}
catch (PartitionAlreadyExistsException e){ }
catch (IllegalAccessException e){ }
return myPartition;
}
//. . . .
//In order to retrieve a WorkArea partition at some time later or
//from some other class, do the following (from client or server):
public UserWorkArea myGet(){
//Variable to hold our WorkAreaPartitionManager reference
WorkAreaPartitionManager partitionManager = null;
//Get an instance of the WorkAreaPartitionManager implementation
try {
InitialContext initialContext = new InitialContext();
partitionManager = (WorkAreaPartitionManager) initialContext.lookup(jndiName);
} catch (Exception e) { }
//Variable used to hold the retrieved WorkArea partition
UserWorkArea myPartition = null;
try{
myPartition = partitionManager.getWorkAreaPartition(partitionName);
}catch(NoSuchPartitionException e){ }
return myPartition;
}
}
Que faire ensuite
Pour plus d'informations sur Work Area, voir le package com.ibm.websphere.Fiworkarea dans la documentation sur les API. La documentation sur les API générées est disponible dans la table des matières du centre de documentation, sous
.