Gestión de un trabajo local con un área local

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

  1. 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();
           ...
       }
    }
  2. 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.
  3. 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");
           ...
       }
    }
    
  4. 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.

  5. 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.

  6. 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 .


Icon that indicates the type of topic Task topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twa_using
File name: twa_using.html