En el caso de los proyectos que se conviertan de EJB 1.1 a
EJB 2.x, hay que realizar unos cuantos pasos para migrar el código
existente en EJB 1.1 a EJB 2.x.
Nota: Los beans de EJB 2.x solo se pueden utilizar en un
proyecto de EJB 2.x (aunque en un proyecto de 2.x también se pueden
utilizar beans de 1.1).
- Para los beans CMP de 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 de 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
Rational Application
Developer V6.0:
- Las consultas del lenguaje de consulta EJB en las que intervienen beans EJB
con claves que se componen de relaciones con otros beans EJB no resultarán
válidas y provocarán errores en el momento del despliegue.
- El soporte del lenguaje de consulta EJB de
IBM
amplía la especificación EJB 2.x de diversas maneras, entre ellas las de relajar algunas
restricciones, añadir soporte para más funciones de DB2, etcétera. Si le
interesa la portabilidad entre las bases de datos de diversos proveedores o
entre las herramientas de despliegue EJB, tendrá que tener cuidado de escribir
todas las consultas del 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 métodos de búsqueda CMP de 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 sean de la aplicación:
- Lance javax.ejb.EJBException, en lugar de
java.rmi.RemoteException, para informar de las excepciones
que no sean de la aplicación.
- En EJB 2.x y 1.1, todas las excepciones que no sean de la
aplicación y que haya lanzado la instancia provocan la retrotracción
de la transacción en la que se ejecutaba la instancia, así como 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 la 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 invocó
con el método setRollbackOnly() en el objeto EJBContext.
- Actualice los valores CMP de los valores predeterminados
específicos de la aplicación para que estén dentro de
ejbCreate (no lo haga utilizando variables globales, porque
los contenedores de EJB 1.1 establecen todos los campos en valores
predeterminados genéricos antes de llamar a ejbCreate, que
sobrescribirá los valores predeterminados anteriores que sean
específicos de la aplicación).