En el caso de los proyectos convertidos de EJB 1.1 a
EJB 2.x, se deben realizar unos pasos para migrar el código
EJB 1.1 existente a EJB 2.x.
Acerca de esta tarea
Nota: Los beans de EJB 2.x solo se soportan en un
proyecto de EJB 2.x (aunque en un proyecto de 2.x también
soporta beans de 1.1).
- Para los beans CMP 1.1, sustituya cada campo CMP por los
métodos abstractos getXXX y setXXX.
(Por lo tanto, la clase de bean también debe ser abstracta).
- Para los CMP, cree un método abstracto getXXX
y setXXX para la clave primaria.
- Para los métodos de búsqueda CMP 1.1, cree un método EJBQL
(lenguaje de consulta EJB) para cada método de búsqueda.
Nota: El lenguaje de
consulta EJB tiene las siguientes limitaciones en
versión 8.5.x V6.0:
- Las consultas de Lenguaje de consulta EJB que implican
EJB con claves formadas por relaciones con otros EJB
aparecerán como no válidas y producirán errores durante el despliegue.
- El soporte de lenguaje de consulta EJB de
IBM®
amplía la especificación EJB 2.x de diversas maneras,
incluyendo la relajación de algunas restricciones, la adición de soporte para
más funciones de DB2,
etc. Si le interesa la portabilidad entre diversas bases de datos de proveedor o
una herramienta de despliegue EJB, deberá tener cuidado de escribir
todas las consultas de lenguaje de consulta EJB de forma que estén
estrictamente de acuerdo con las instrucciones indicadas en el capítulo
11 de la especificación EJB 2.x.
- Para los buscadores de CMP 1.1, devuelva
java.util.Collection en lugar de
java.util.Enumeration.
- Para los beans CMP de 1.1, cambie todas las apariciones de
this.field = value por setField(value) en el método
ejbCreate() y en cualquier otra parte del código.
- Actualice el manejo de excepciones (comportamiento de la
retrotracción) para las excepciones que no son de la aplicación:
- Emita javax.ejb.EJBException en lugar de
java.rmi.RemoteException para informar de las excepciones
que no son de la aplicación.
- En EJB 2.x y 1.1, todas las excepciones que no son de la
aplicación generadas por la instancia producen la
retrotracción de la transacción en la que se ha ejecutado la
instancia y el descarte de la instancia.
- Actualice el manejo de excepciones (comportamiento de la
retrotracción) para las excepciones de la aplicación:
- En EJB 2.x y 1.1, una excepción de aplicación no hace que el
contenedor retrotraiga automáticamente una transacción.
- En EJB 1.1, el contenedor realiza la retrotracción solamente si la instancia se ha invocado
utilizando el método setRollbackOnly() en el objeto EJBContext.
- Actualice cualquier valor CMP de los valores predeterminados
específicos de la aplicación para que estén dentro de
ejbCreate (sin utilizar variables globales, porque
los contenedores EJB 1.1 establecen todos los campos en valores
predeterminados genéricos antes de llamar a ejbCreate, que
sobrescribirá los valores predeterminados anteriores
específicos de la aplicación).