Herramientas EJB: notas de release

1.0 Introducción
2.0 Software soportado y especificaciones
3.0 Problemas conocidos
   3.1 Problemas de renovación
   3.2 Consejos y restricciones de la correlación de encuentro en el medio
   3.3 Soporte de arrastrar y soltar en el editor de correlaciones
   3.4 Suprimir tablas y esquemas en la vista Navegador de la perspectiva J2EE
   3.5 Predicados optimistas para los beans de entidad con CMP de 1.1
   3.6 Consejos y restricciones de herencia
   3.7 Problemas al generar código de despliegue cuando la vía de instalación tiene varios espacios consecutivos
   3.8 Hacer referencia a archivos JAR de tiempo de ejecución en el momento del desarrollo
   3.9 No correlacionar tipos compuestos a través de múltiples tablas
   3.10 Al suprimir una entidad con CMP no se elimina la entrada de correlación
   3.11 Limitaciones de QL EJB
   3.12 La validación de las referencias EJB no es automática
   3.13 Atributos heredados de beans con CMP
   3.14 Los nombres árabes no están soportados en los beans y archivos Java
   3.15 Limitaciones de la generación de consultas
   3.16 Validación de lenguaje de consulta EJB para los archivos JAR de EJB 2.0
   3.17 Restricciones al utilizar acciones de EJB en la Jerarquía J2EE
   3.18 Problema al editar un enlace de local-ejb-ref
   3.19 Errores en la lista de tareas después de desplegar relaciones de EJB 2.0
   3.20 Añadir un directorio al archivo MANIFEST.MF
   3.21 Faltan métodos ejbCreate especializados para las columnas de clave foránea no nulas
   3.22 Limitación de los cambios realizados en los campos CMP de la página Fuente al utilizar la herencia
   3.23 El código de despliegue EJB no se suprime al cambiar una clase de bean
   3.24 No está soportada una clave primaria desconocida
   3.25 Al cambiar la clase de clave primaria de un CMP 1.1 con relaciones se producen errores de compilación
   3.26 Errores de reflejo al actualizar desde el depósito CVS
   3.27 Suprimir una consulta FIND de la vista Esquema
   3.28 La página Fuente y la herencia EJB
   3.29 Las consultas QL EJB no se generan como es debido para las relaciones de muchos a muchos en una estructura de herencia
   3.30 Problema de correlación de SQL Server en relación con los datos de tipo FLOAT
   3.31 Puede ser necesario generar código desplegado cuando se utilizan beans de empresa de otro proyecto
   3.32 Soporte para correlacionar beans de empresa con claves foráneas y claves primarias
   3.33 Restricción para la correlación de tablas de herencia y secundarias
   3.34 Hacer limpieza de los beans de acceso al migrar beans de EJB 1.1 a EJB 2.0
   3.35 Desplegar aplicaciones EJB con conversores y compositores en WebSphere Application Server v4.0.6
   3.36 Migrar proyectos EJB que contengan clases binarias
   3.37 Implementación de correlación ascendente para vistas

1.0 Introducción

Las herramientas EJB proporcionan un entorno especializado que permite desarrollar beans de empresa. Las herramientas EJB constan de las siguientes entidades:

En este archivo readme se describen los problemas conocidos, las limitaciones y los métodos alternativos asociados a las herramientas EJB.

2.0 Software soportado y especificaciones

Ahora, la opción -dbvendor del mandato ejbdeploy (herramienta de despliegue de EJB) soporta los siguientes valores (en correspondencia con las bases de datos soportadas):

Sin embargo, ha dejado de soportar estos valores:

3.0 Problemas conocidos

3.1 Problemas de renovación

Si hay archivos o recursos del entorno de trabajo que parezcan estar desincronizados o si se produce una anomalía inesperada como, por ejemplo, que los editores y las vistas no reflejen los valores actuales del descriptor de despliegue, el problema se puede solucionar cerrando el proyecto desde el menú Proyecto y luego abriéndolo de nuevo.

3.2 Consejos y restricciones de la correlación de encuentro en el medio

  1. Comparar por nombre: solo manejará las coincidencias exactas. Si ha generado el esquema utilizando la conmutación compatible con WebSphere Application Server Versión 3.5 o ha importado un JAR de WebSphere Application Server Versión 3.5, se añadirá 'tbl' al final de los nombres de tabla y estos no se reconocerán.
  2. Herencia: los beans hijos no se correlacionarán si no tienen campos propios. Debe correlacionarlos manualmente con la tabla padre.
  3. El tipo java.util.Date no está soportado en la correlación de campos CMP 1.1
  4. Si se utiliza un compositor en una correlación, genere la correlación, guárdela, cierre y vuelva a abrir el proyecto y, a continuación, despliéguelo.

3.3 Soporte de arrastrar y soltar en el editor de correlaciones

La acción de arrastrar y soltar solo está soportada en la "dirección" de la correlación. Por ejemplo, si la correlación se ha creado desde una operación "Descendente", la acción de arrastrar un bean de empresa a una base de datos está permitida. Las operaciones de arrastrar y soltar permitidas son las siguientes:

  1. Al arrastrar un bean de empresa a una tabla se crea una correlación entre los dos.
  2. Al arrastrar un bean a una base de datos (DB) se crea la tabla y las columnas correspondientes y se correlacionan con el bean y los atributos.

3.4 Suprimir tablas y esquemas en la vista Navegador de la perspectiva J2EE

Si debe suprimirse una tabla, utilice la perspectiva Datos o la vista Jerarquía J2EE de la perspectiva J2EE, y así también se eliminarán todos los enlaces dependientes. Normalmente no debe utilizar el Navegador ni el Navegador J2EE para suprimir recursos de J2EE porque no se actualizarán las dependencias.

3.5 Predicados optimistas para los beans de entidad con CMP de 1.1

En WSAD 5.0, añadimos la posibilidad de que el desarrollador de beans identifique los atributos que se utilizarán para la actualización sobrecalificada. Los archivos JAR de EJB creados utilizando releases anteriores de WSAD no contienen esta especificación para los beans de entidad con CMP de 1.1. Sin embargo, cuando se despliegan utilizando WSAD 5.1, la semántica anterior está soportada. Concretamente, en ausencia de una lista de atributos, se utilizan todos los predicados disponibles. Observe que los beans de entidad con CMP de 2.0 se tratan de manera diferente. Si no se seleccionan atributos como predicados, no se añade ninguno a la actualización sobrecalificada.

3.6 Consejos y restricciones de herencia

  1. No utilice tipos BLOB en una estructura de herencia de raíz-hoja si está utilizando Oracle como base de datos.
  2. La correlación de herencia de raíz/hoja no está soportada para las bases de datos MySQL, InstantDB, SQL92 y SQL99. Estas bases de datos no dan soporte a los operadores del conjunto SQL necesarios para las consultas complejas utilizadas en una correlación de raíz-hoja. Para probar con respecto a estas bases de datos, deberá utilizar una correlación de una sola tabla.
  3. La correlación de campos CMP con columnas de no nulos no está soportada en los beans heredados. Los predicados optimistas solamente pueden establecerse en campos CMP desde el bean raíz.

3.7 Problemas al generar código de despliegue cuando la vía de instalación tiene varios espacios consecutivos

Si hay múltiples espacios consecutivos en alguno de los directorios de la vía de acceso en la que está instalado el producto, la generación del código de despliegue resultará anómala.

3.8 Hacer referencia a archivos JAR de tiempo de ejecución en el momento del desarrollo

Si necesita compilar con respecto a los archivos JAR visibles en la unidad ejecutable Websphere Application Server (por ejemplo, rt.jar, xerces.jar, etcétera), como regla general deberá añadir esos JAR para la correspondiente instalación de tiempo de ejecución utilizando las variables de vía de acceso de clases predefinida. Por ejemplo, deberá utilizar la variable de vía de acceso de clases WAS_PLUGINDIR para los archivos JAR del servidor WebSphere Application Server v4.0 y la variable de vía de acceso de clases WAS_50_PLUGINDIR para los archivos JAR del servidor WebSphere Application Server v5.0.

3.9 No correlacionar tipos compuestos a través de múltiples tablas

El editor de correlaciones le permite correlacionar un tipo compuesto con múltiples columnas de distintas tablas. Esto provocará errores en la generación del código de despliegue. Asegúrese de que todas las columnas de la correlación del tipo compuesto pertenecen a la misma tabla.

3.10 Al suprimir una entidad con CMP no se elimina la entrada de correlación

Cuando se suprime una entidad con CMP, no se eliminarán las entradas de correlación de las correspondientes correlaciones a las que hace referencia este bean. Cuando se abra el editor de correlaciones en estos archivos tras suprimirse una entidad, se eliminarán las correlaciones. Este es el comportamiento que cabe esperar. Deberá abrir el editor de correlaciones antes de generar código de despliegue.

3.11 Limitaciones de QL EJB

  1. Las consultas QL EJB que impliquen beans de empresa con claves formadas por relaciones con otros beans de empresa aparecerán como no válidas y provocarán errores en el momento del despliegue. Este es un defecto conocido.
  2. El soporte de QL EJB de IBM amplía la especificación EJB 2.0 de diversas formas, entre ellas, reduciendo algunas restricciones, añadiendo soporte para más funciones de DB2, etcétera. Si se propone lograr la portabilidad entre las diversas bases de datos de proveedores o herramientas de despliegue de EJB, deberá escribir todas las consultas QL EJB estrictamente según el Capítulo 11 de la especificación EJB 2.0.

3.12 La validación de las referencias EJB no es automática

La validación de referencias locales de EJB, referencias de EJB y referencias de recursos no se produce automáticamente cuando se realizan cambios en dichas referencias. Para que se lleve a cabo la validación de estas referencias, hay que desencadenar explícitamente el validador EAR.

3.13 Atributos heredados de beans con CMP

Al configurar beans con CMP heredados, es posible que los hijos no tengan atributos de CMP con el mismo nombre que los definidos en algún lugar de sus cadenas de ancestros. Por ejemplo, Padre es un bean con CMP que contiene un ID de atributo de tipo int. Si Hijo, un bean con CMP creado mediante el asistente Creación de beans con CMP, ha especificado que Padre es su supertipo y ha intentado añadir un ID de atributo de tipo int, el ID de atributo no se añadiría porque se heredaría el ID de atributo del Padre. Si Hijo2, otro bean con CMP no relacionado, contenía un ID de atributo de tipo java.lang.String y se ha cambiado su estructura de herencia mediante el editor de descriptores de despliegue para heredar de Padre, el ID de atributo de Hijo2 de tipo java.lang.String se eliminará porque se heredaría el ID de atributo del Padre y podría haber errores de validación debido a conflictos de tipos.

3.14 Los nombres árabes no están soportados para los beans y archivos Java

No utilice nombres árabes para los archivos Java, beans Java ni beans de acceso. Tampoco utilice nombres árabes cuando trabaje en el ejemplo de MiniBank.

3.15 Limitaciones de la generación de consultas

  1. La acción de precargar a través de relaciones m:n dará como resultado la generación de SQL erróneo. Esta es una limitación conocida que nos proponemos solucionar en el futuro.
  2. La acción de precargar a través de relaciones de autorreferencia provocará que se genere SQL erróneo.
  3. Hay que evitar las relaciones que no estén bien definidas entre beans de empresa padres e hijos dentro de la misma jerarquía de herencia.

3.16 Validación del lenguaje de consulta EJB para los archivos JAR de EJB 2.0

La validación de lenguaje de consulta EJB se ejecuta actualmente como parte de la validación de correlación de EJB-RDB. Si no existe un documento de correlación (archivo Map.mapxmi) en el proyecto, no se validarán las consultas EJB. Esto cambiará en el siguiente release, en el que se validarán las consultas independientemente de la existencia de un documento de correlación.

3.17 Restricciones de ClearCase al utilizar acciones de EJB en la Jerarquía J2EE

Si utiliza las acciones de la Jerarquía J2EE para modificar beans de empresa (por ejemplo, al añadir un campo CMP a un bean), primero deberá asegurarse de que los archivos de proyecto se han reservado fuera del depósito.

3.18 Problema al editar un enlace de local-ejb-ref

El intento de editar el enlace de una local-ejb-ref en la página "Referencias" del editor de descriptores de despliegue EJB con el botón "Examinar" hará que no sea posible seleccionar un bean destino que no tenga una interfaz remota. Una manera de evitar este problema consiste en suprimir la referencia y volver a crearla.

3.19 Errores en la lista de tareas después de desplegar relaciones de EJB 2.0

Si elimina una relación de EJB 2.0 y vuelve a generar el código de despliegue, podrían aparecer errores no válidos en la lista de tareas. Una manera de salir al paso de este problema consiste en eliminar primero el código de despliegue de los beans antes de regenerar el código de despliegue.

En ocasiones, los errores no válidos de la lista de tareas también se ven después de añadir una relación de EJB 2.0 y regenerar el código de despliegue. En este caso, basta con regenerarlo de nuevo para que desaparezcan los errores.

3.20 Añadir un directorio al archivo MANIFEST.MF

Al añadir un directorio al archivo MANIFEST.MF, aparece un mensaje de error como el que se indica a continuación:

IWAE0024W La vía de acceso de clases de manifiesto del archivado xyz.jar contiene una entrada, properties, que no se puede resolver en un archivo o módulo del EAR: ejemplo...

La especificación EJB no es explícita en esta cuestión. Sin embargo, no sugiere que los archivos sueltos de un EAR no sean válidos. Actualmente esta configuración funciona en WebSphere Application Server, pero no es seguro que funcione en el futuro.

Puede crear un proyecto Java y añadir los archivos de propiedades a una carpeta fuente (o al proyecto, si el proyecto es la carpeta fuente). En el editor de aplicaciones puede añadir este proyecto Java como JAR de utilidades de proyecto en la pestaña Módulos del editor; a continuación, puede ejecutar el archivo EAR en el entorno de prueba WebSphere. Al exportar el archivo EAR, el proyecto Java se añadirá automáticamente a un JAR y se incluirá en el EAR.

3.21 Faltan métodos ejbCreate especializados para las columnas de clave foránea no nulas

Si hace una correlación ascendente en un esquema con una clave foránea cuyas columnas no son nulas, hay que crear un método ejbCreate() especializado con el tipo de interfaz de cliente de un cometido añadido a la firma. Esto no se hace automáticamente al realizar la correlación ascendente.

3.22 Limitación de los cambios realizados en los campos CMP de la página Fuente al utilizar la herencia

Para dar soporte a las especificaciones EJB 1.1 y 2.0, tenemos que crear un campo CMP coincidente para cada bean de subtipo dentro de una estructura de herencia EJB. Si abre el editor de descriptores de despliegue EJB y modifica el nombre de uno de estos campos en la página Fuente, el correspondiente cambio de nombre no se realizará en los campos CMP que se crearon en los beans de subtipo para satisfacer las especificaciones EJB. Una manera de salir al paso de este problema consiste en utilizar la acción Editar de la página Beans para cambiar el nombre.

3.23 El código de despliegue EJB no se suprime al cambiar una clase de bean

Para que múltiples beans de empresa puedan utilizar las mismas clases Java, se necesita que el código de despliegue generado utilice una técnica de denominación para hacer exclusivos los nombres de las clases de despliegue generadas. Los nombres se derivan a partir de la clase, las interfaces y las clases de clave del bean existente.

Si ha generado el código de despliegue de un bean y desea cambiar una de estas clases, primero deberá suprimir el código de despliegue. Si no lo hace, las clases antiguas generadas no se eliminarán y podrían contener errores de compilación. Esto también sería aplicable si cambia el tipo del campo de clave primaria (primkey) con la acción Editar en la página Beans. Ello haría que se cambiara automáticamente la clase de clave, que pasaría a ser el tipo especificado, o bien se crearía una clave compuesta nueva si un campo de clave primaria dejara de ser válido.

3.24 No está soportada una clave primaria desconocida

Las herramientas EJB no soportan actualmente la definición de clave primaria desconocida descrita por la especificación EJB 2.0. Una manera de salir al paso de este problema consiste en definir una clase de clave primaria concreta.

3.25 Al cambiar la clase de clave primaria de un CMP 1.1 con relaciones se producen errores de compilación

Para dar soporte a las relaciones de CMP 1.1, hay que crear clases de enlace (Link). Para estas clases de enlace se necesita el conocimiento de las clases de clave primaria de los beans. Si se cambia la clase de clave primaria de un bean con CMP 1.1 que esté implicado en relaciones, las clases de enlace generadas seguirán teniendo referencias a la clase de clave primaria antigua. Una manera de salir al paso de este problema consiste en actualizar manualmente las clases de enlace. Solo debe haber dos apariciones en las que sea necesario llevar a cabo el cambio.

3.26 Errores de reflejo al actualizar desde el depósito CVS

Si, después de actualizar un proyecto EJB de un depósito CVS, la vista Tareas visualiza errores que indican que algunas clases o interfaces no han quedado reflejadas, inténtelo reconstruyendo el proyecto EJB para que desaparezcan los errores.

El error podría tener este aspecto: "CHKJ2802E: La clase ejb-class test.SessionBean, o uno de sus supertipos, no se puede reflejar. Compruebe la vía de acceso de clases."

3.27 Suprimir una consulta FIND de la vista Esquema

La acción de suprimir desde la vista Esquema una consulta FIND procedente de un bean con CMP 2.0 que contenga una interfaz local no puede eliminar la declaración de método de la interfaz inicial local. Una manera de salir al paso de este problema consiste en utilizar el botón Eliminar de la sección Consultas del editor de descriptores de despliegue EJB.

3.28 La página Fuente y la herencia EJB

Si va a modificar la forma de los beans con CMP en una jerarquía de herencia, debe utilizar las páginas de diseño del editor de descriptores de despliegue EJB, no la página Fuente. Por ejemplo, si desea añadir o eliminar campos CMP o cambiar un campo de clave primaria de un bean con CMP, las herramientas sincronizan estos campos para todos los beans heredados para que los beans se mantengan en conformidad con la especificación EJB. Esta sincronización puede no producirse si cambia el fuente en la página Fuente.

3.29 Las consultas QL EJB no se generan como es debido para las relaciones de muchos a muchos en una estructura de herencia

Supongamos que tenga definida una estructura de herencia EJB (ya sea una herencia de raíz/hojas o de una sola tabla) y que haya una relación de muchos a muchos (m:m) con un bean EJB situado dentro de esta estructura. En este caso, las consultas QL EJB que se definan para estos beans tendrán sentencias JOIN incorrectas.

A continuación figura un ejemplo de la estructura:

Cliente <----- m:m -----> Cuenta
                            |
                            |
                    ------heredar------
nbsp;                    
                        |         |
                   
Cheques    Ahorros

3.30 Problema de correlación de SQL Server en relación con los datos de tipo FLOAT

Si un bean con CMP se ha correlacionado con una base de datos SQL Server, es preciso que un campo de tipo flotante se correlacione con una columna de tipo FLOAT, no REAL.

3.31 Puede ser necesario generar código desplegado cuando se utilizan beans de empresa de otro proyecto

Si un bean de empresa de un proyecto EJB utiliza la interfaz inicial o remota de un segundo bean de empresa de otro proyecto (por ejemplo, si tiene un método que toma como parámetro la interfaz remota del segundo bean de empresa), tendrá que generar código desplegado para los dos proyectos si cambia la interfaz inicial o remota del segundo bean de empresa.

Esto es para garantizar que las clases generadas por RMIC del segundo bean de empresa están actualizadas en ambos proyectos.

3.32 Soporte para correlacionar beans de empresa con claves foráneas y claves primarias

Si se propone correlacionar un bean de empresa con una tabla de base de datos, tendrá que tener en cuenta varias restricciones que implican las claves foráneas y las claves primarias:

3.33 Restricción para la correlación de tablas de herencia y secundarias

Si se propone utilizar el enfoque de raíz-hojas para correlacionar la herencia o utilizar correlaciones secundarias con múltiples tablas, debe eliminar las restricciones de clave foránea de la base de datos para evitar problemas de ordenación de integridad referencial (sentencias SQL que se ejecutan sin el debido orden).

3.34 Hacer limpieza de los beans de acceso al migrar beans de EJB 1.1 a EJB 2.0

Dado que los beans de acceso no están soportados para los beans de empresa que solo tienen vistas de cliente local, es posible que tenga que hacer algunas tareas de limpieza manual si migra un bean de EJB 1.1 a EJB 2.0 y añade una vista de cliente local y elimina la vista de cliente remoto. Si tiene un bean de acceso de clase de datos, debe suprimir la clase de fábrica asociada al bean. Si tiene un bean de acceso de ayuda de copia, debe suprimir el propio bean de acceso, suprimir la fábrica y hacer limpieza de los métodos que podrían no ser válidos en la clase de bean.

3.35 Desplegar aplicaciones EJB con conversores y compositores en WebSphere Application Server v4.0.6.x

Si utiliza conversores y compositores en la correlación de EJB con RDB y despliega en WebSphere Application Server v4.0.6, tendrá que aplicar un arreglo electrónico (eFix) a WebSphere Application Server. El arreglo electrónico de WAS actualiza el archivo vaprt.jar.

El arreglo electrónico de WAS se llama PQ76109.

En WebSphere Studio Application Developer v5.1, el archivo vaprt.jar, que aloja los conversores y compositores por omisión, ha cambiado. Debido a estos cambios, el archivo vaprt.jar de WebSphere Application Server v4.0.6 debe actualizarse. El arreglo electrónico de WAS sincroniza este archivo vaprt.jar.

Una manera de salir al paso de este problema sin aplicar el arreglo electrónico consiste en copiar el archivo vaprt.jar del directorio de tiempo de ejecución del conector j2ee.core y pegarlo en el directorio lib de la unidad ejecutable WAS. Los siguientes conversores y compositores están obsoletos en WAS v4.0.6 si no se aplica el arreglo electrónico:

VapBigDecimalToBooleanConverter VapBigDecimalToDoubleConverter VapBigDecimalToFloatConverter VapBigDecimalToIntegerConverter VapBigDecimalToLongConverter VapBigDecimalToShortConverter VapTimestampToUtilDateConverter NameComposer VapUSPhoneNumberComposer

3.36 Migrar proyectos EJB que contengan clases binarias

Cuando utiliza el asistente Migración para migrar un proyecto EJB que contenga una o varias clases Java binarias (archivos .class), el proceso migrará satisfactoriamente los componentes del proyecto que contengan archivos fuente Java (archivos .java), pero no las clases binarias. Tendrá que arreglar manualmente los errores que se produzcan.

3.37 Implementación de correlación ascendente para vistas

Al efectuar una correlación ascendente (generar beans de empresa basados en tablas existentes), por omisión el asistente no genera beans para las tablas subyacentes a vistas. Sin embargo, debido a que es necesario crear relaciones para claves foráneas, el asistente crea automáticamente un bean para cualquier tabla que tenga cualquier clave foránea o a cuya clave primaria señale cualquier clave foránea de otras tablas. Si quita la marca del recuadro de selección No crear beans para tablas subyacentes a vistas, el asistente generará beans para todas las tablas y vistas del esquema de base de datos.

Volver al archivo readme principal