Migración del código de enterprise bean de la versión 1.1 a la versión 2.1

Los beans compatibles con la versión 2.1 de Enterprise JavaBeans (EJB) se pueden ensamblar sólo en un módulo compatible con EJB 2.1, aunque un módulo compatible con EJB 2.1 puede contener una mezcla de beans de la versión 1.x y la versión 2.1.

Acerca de esta tarea

La especificación de EJB de la versión 2.1 manda que antes de que un contenedor de EJB que inicie una consulta findByMétodo, se sincronice el estado de todos los enterprise beans registrados en la transacción actual con el almacén persistente. Así es que se efectúa la consulta en los datos actuales. Si se vuelven a ensamblar los beans de la versión 1.1 en un módulo compatible con EJB 2.1, el contenedor de EJB sincroniza el estado de los beans de la versión 1.1 así como los de la versión 2.1. Como resultado, podría observar algún cambio en el comportamiento de la aplicación aún cuando el código de la aplicación de beans de la versión 1.1 no se haya cambiado.

La información siguiente generalmente se aplica a los enterprise beans que actualmente son compatibles con la versión 1.1 de la especificación de EJB. Para obtener más información acerca de la migración de código de beans producidos con la herramienta Rational Application Developer, consulte la documentación de ese producto.

Procedimiento

  1. En beans con persistencia gestionada por contenedores (CMP) de la versión 1.x, sustituya cada campo de CMP con métodos get y set abstractos. Para efectuar esto, debe crear cada clase de bean abstracta.
  2. En beans con CMP de la versión 1.x, cambie todas las apariciones de this.campo = valor con setCampo(valor).
  3. En cada bean CMP, cree métodos get y set abstractos para la clave principal.
  4. En beans con CMP versión 1.x, cree sentencias de Lenguaje de consulta EJB para cada método finder (de búsqueda).
    Nota: El lenguaje de consulta EJB tiene las siguientes limitaciones en Application Developer Versión 5:
    • Las consultas del lenguaje de consulta EJB que impliquen el uso de archivos EJB con claves constituidas por relaciones con otros archivos EJB aparecen como no válidos y generan errores durante el tiempo de despliegue.
    • El soporte del lenguaje de consulta EJB de IBM amplía la especificación de EJB 2.1 de varios modos, incluidas la reducción de algunas restricciones, la adición de soporte a más funciones DB2, etc. Si la portabilidad entre las bases de datos de varios proveedores o herramientas de despliegue de EJB supone una problema, se debe tener sumo cuidado al escribir todas las consultas del lenguaje de consulta EJB para que se ajusten estrictamente a las instrucciones descritas en el capítulo 11 de la especificación de EJB 2.1.
  5. En métodos finder (de búsqueda) de beans con CMP versión 1.x, devuelva java.util.Collection en lugar de java.util.Enumeration.
  6. Actualice la gestión de excepciones que no sean de aplicación.
    • Para informar de excepciones que no sean de aplicación, emita la excepción javax.ejb.EJBException en lugar de java.rmi.RemoteException.
    • Modifique el comportamiento de retrotracción cuando sea necesario: en EJB versiones 1.1 y 2.1, todas las excepciones que no sean de aplicación que emita la instancia del bean provocan la retrotracción de la transacción en que se está ejecutando la instancia; se descartará la instancia. En EJB 1.0, el contenedor no retrotrae la transacción ni descarta la instancia si emite la excepción java.rmi.RemoteException.
  7. Actualice el comportamiento de la retrotracción como consecuencia de las excepciones de aplicaciones.
    • En EJB versiones 1.1 y 2.1, una excepción de aplicación no provoca que el contenedor de EJB retrotraiga automáticamente una transacción.
    • En EJB versión 1.1, el contenedor realiza la retrotracción sólo si la instancia ha llamado a setRollbackOnly() en su objeto EJBContext.
    • En EJB versión 1.0, es necesario el contenedor para retrotraer una transacción cuando una excepción de aplicación pasa a través de un límite de transacción iniciado por el contenedor.
  8. Actualice cualquier valor CMP de los valores predeterminados específicos de la aplicación para que aparezcan dentro de ejbCreate (sin utilizar variables globales, ya que los contenedores de EJB 1.1 establecen todos los campos en valores predeterminados genéricos antes de llamar a ejbCreate, que sobrescribe cualquier valor predeterminado específico de la aplicación.) Este enfoque también sirve para los CMP de EJB 1.0.

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=tejb_migr20
File name: tejb_migr20.html