Antes de empezar
Asegúrese de que el cliente tiene una referencia a la interfaz UserWorkArea, según se describe en el tema Acceso a la partición UserWorkArea o una referencia a una partición definida por el usuario según se define en el tema Acceso a una partición de área de trabajo definida por el usuario. En los pasos siguientes se utiliza la partición UserWorkArea como ilustración. No obstante, se puede utilizar una partición definida por el usuario de la misma manera.
Acerca de esta tarea
En una aplicación empresarial que utilizan áreas de trabajo, los objetos del
servidor suelen recuperar las propiedades del área de trabajo y utilizarlas como guías
para el trabajo local.
Procedimiento
- Recupere el nombre del área de trabajo activa para determinar si la hebra de llamada está asociada a un área de trabajo.
Las aplicaciones utilizan el método getName en la interfaz
UserWorkArea para recuperar el nombre del área de trabajo actual. Si la hebra no está asociada a un área de trabajo, el método getName devuelve null. En el código de ejemplo siguiente, el nombre del área de trabajo corresponde al nombre
de la clase en la que se inició el área de trabajo.
public class SimpleSampleBeanImpl implements SessionBean {
...
public String [] test() {
// Obtener la referencia work-area (área de trabajo) desde JNDI.
...
// Recuperar el nombre del área de trabajo. En este ejemplo,
// el nombre se utiliza para identificar la clase en la que el
// se comenzó el área de trabajo.
String invoker = userWorkArea.getName();
...
}
}
- Sobrescritura de las propiedades de un área de trabajo Los objetos del servidor pueden alterar
temporalmente las propiedades del área de trabajo cliente, mediante la creación
de su propia área de trabajo anidada.
Para obtener más información, consulte el tema Sobrescritura de las propiedades de un área de trabajo.
- Recupere las propiedades de un área de trabajo mediante el método get.
El método get es intencionadamente ligero; no hay excepciones declaradas que manejar. Si no hay área de trabajo activa o si no hay tal propiedad
establecida en el área de trabajo actual, el método get devuelve null.
Importante: El método get puede lanzar un NotSerializableError en un
escenario relativamente poco común, en el que los clientes CORBA
establezcan tipos de datos compuestos e invoquen interfaces
enterprise-bean.
El ejemplo siguiente muestra la recuperación de las propiedades site-identifier
y priority (identificador de sitio y prioridad) por parte de SimpleSampleBean. Tenga en
cuenta que el cliente ha establecido una propiedad en un área de trabajo
exterior y que la otra propiedad la ha establecido el bean del lado del servidor en el
área de trabajo anidada; el anidamiento es transparente en la recuperación de
propiedades.
public class SimpleSampleBeanImpl implements SessionBean {
public String [] test() {
...
// Comenzar un área de trabajo anidada.
userWorkArea.begin("SimpleSampleBean");
try {
userWorkArea.set("company",
SimpleSampleCompany.London_Development);
}
catch (NotOriginator e) {
}
SimpleSampleCompany company =
(SimpleSampleCompany) userWorkArea.get("company");
SimpleSamplePriority priority =
(SimpleSamplePriority) userWorkArea.get("priority");
...
}
}
- Opcional: Recupere una lista de todas las claves visibles desde un área de trabajo.
La interfaz UserWorkArea proporciona el método retrieveAllKeys
para recuperar una lista de todas las claves visibles desde un área de
trabajo. Este método no acepta
argumentos y devuelve una matriz de series de caracteres. El método retrieveAllKeys devuelve
nulo si no hay ninguna área de trabajo asociada con la hebra. Si hay una área de trabajo
asociada que no contiene ninguna propiedad, el método devuelve una matriz de
tamaño 0.
- Consulte la modalidad de una propiedad de área de trabajo mediante el método getMode.
La interfaz UserWorkArea proporciona el método getMode para determinar la modalidad de una propiedad específica. Este método acepta como argumento la clave de la propiedad y
devuelve la modalidad como un objeto PropertyModeType. Si la clave especificada no existe en el área de
trabajo, el método devuelve PropertyModeType.normal, lo que indica que la propiedad se puede
establecer y eliminar sin errores.
- Opcional: Suprima una propiedad del área de trabajo.
La interfaz
UserWorkArea proporciona el método remove para suprimir una propiedad del ámbito actual de un área de trabajo. Si la propiedad se ha establecido inicialmente en
el ámbito actual, al eliminarlo se suprime la propiedad. Si la propiedad se ha establecido
inicialmente en un área de trabajo asociada, al eliminarla se suprime la propiedad
hasta que se completa el ámbito actual. Cuando se completa el área de trabajo, se
restaura la propiedad suprimida.
El método remove acepta la clave
de la propiedad como argumento. Sólo se pueden suprimir las propiedades con las modalidades normal
y read-only.
Si se intenta suprimir una propiedad fixed se genera la
excepción PropertyFixed.
Si se intenta eliminar propiedades en áreas de
trabajo que se han originado en otros procesos, se genera la excepción
NotOriginator.
Ejemplo
El lado del servidor del ejemplo de aplicación SimpleSample, que se incluye en el tema Desarrollo de aplicaciones que utilizan áreas de trabajo, acepta invocaciones remotas de los clientes. Con cada llamada remota, el servidor también obtiene un área de trabajo desde
el cliente, si éste la ha creado. El área de trabajo se propaga de forma transparente. Ninguno de los métodos remotos incluye el área de trabajo en su lista de argumentos.
En la
aplicación de ejemplo, los objetos del servidor utilizan la interfaz del área de trabajo
sólo con objetivo didáctico. Por ejemplo, SimpleSampleBean intenta de
forma intencionada grabar directamente en un área de trabajo importada, lo
que genera la excepción NotOriginator. De la misma forma, el bean intenta poner máscara a SimpleSampleCompany, que
es read only, lo que desencadena la excepción PropertyReadOnly. SimpleSampleBean también
anida un área de trabajo y altera temporalmente de forma correcta la propiedad priority
antes de invocar SimpleSampleBackendBean. Una aplicación empresarial real extraería las
propiedades del área de trabajo y las utilizaría para el trabajo local. SimpleSampleBean
simula esto mediante la grabación de un mensaje de que se deniega la función cuando
se produce una solicitud desde el entorno de ventas .