Transformación de UML en EJB

 

La transformación de UML en EJB transforma los elementos de modelo de Lenguaje unificado de modelado (UML) en enterprise beans y código Java. La transformación de UML en EJB es la misma que la transformación de UML en Java, pero también puede generar enterprise beans a partir de elementos de UML que están marcados con estereotipos del perfil de transformación EJB.

 

Para poder utilizar la transformación de UML en EJB, deberá estar familiarizado con la transformación de UML en Java.

 

Detalles sobre la transformación

 

Origen de la transformación

Destino de la transformación

Contenedor EJB de destino

Perfil de transformación EJB

Pestañas de configuración de transformación de UML en EJB

Pestaña Destino

Pestaña Entidad

Pestaña Sesión

Pestaña Avanzada

Interpretación de objetos de origen

Tipos primitivos

Paquetes

Clases no marcadas

Interfaces no marcadas

Enumeración no marcada

Clases de <<entity>>

Clases de <<service>>

Clases de <<messageprocessor>>

Asociaciones

Referencias EJB

Casos de ejemplo de reaplicación

Soporte para procesar relaciones entre elementos de UML y enterprise beans visualizados o clases Java

Soporte a las tecnologías de transformación comunes

Integración con la funcionalidad de equipo

Correlación de transformación

Relaciones de origen con destino

 

 

Origen de la transformación

Puede seleccionar uno o varios elementos de la vista Explorador de modelos como origen para la transformación de UML en EJB. La siguiente tabla lista los elementos que la transformación acepta como origen válido:

 

Origen

Resultado

Modelo UML

Transforma todos los paquetes, clases e interfaces del modelo

Paquete UML

Transforma el paquete y todas las clases e interfaces del paquete

Clase UML

Transforma la clase y todos los atributos, operaciones, clases e interfaces de dicha clase

Nota: El padre de la clase debe ser un paquete UML

Interfaz UML

Transforma la interfaz y todos los atributos, operaciones, clases e interfaces de dicha interfaz

Nota: El padre de la interfaz debe ser un paquete UML

Enumeración UML

Transforma la enumeración y todos los literales de enumeración

Nota: El padre de la enumeración debe ser un paquete UML

 

Para generar enterprise beans a partir de un modelo de origen, el modelo de origen debe tener un perfil de transformación EJB aplicado, y los elementos de modelo deben estar marcados con estereotipos del perfil de transformación EJB.

 

Destino de la transformación

La transformación de UML en EJB acepta un solo proyecto EJB como destino. Puede crear el proyecto EJB con o sin un proyecto de cliente. La transformación genera código en la primera carpeta de origen que detecta en el proyecto EJB (normalmente, ejbModule) y en la primera carpeta de origen que detecta en el proyecto de cliente (normalmente, src), si existe un proyecto de cliente.

 

Contenedor EJB de destino

La versión del contenedor EJB que está asociado al proyecto EJB afecta a la transformación de UML en EJB. Cada versión del contenedor EJB tiene reglas diferentes que deben seguirse para la transformación de UML en EJB para que funcione y procese correctamente. La tabla siguiente lista las reglas que están asociadas a las diferentes versiones de contenedores EJB:

 

Versión de contenedor EJB

Reglas que afectan a la transformación

2.1

Los beans CMP (permanencia gestionada por contenedores) 1.1 sólo deben generarse con interfaces remotas

2.0

Los beans CMP 1.1 sólo deben generarse con interfaces remotas

1.1

  • No se pueden generar los beans CMP 2.x
  • Los beans CMP 1.1 sólo deben generarse con interfaces remotas
  • Los beans BMP (permanencia gestionada por beans) sólo deben generarse con interfaces remotas
  • Los beans de sesión sólo deben generarse con interfaces remotas
  • No se pueden generar los beans dirigidos por mensaje

 

Si no se cumplen las reglas anteriores antes de ejecutar la transformación, la transformación EJB no procesa el modelo de origen y no transforma nada.

 

Perfil de transformación EJB

El perfil de transformación EJB define estereotipos que la transformación de UML en EJB interpreta para generar enterprise beans. La tabla siguiente lista los estereotipos que define el perfil de transformación EJB:

 

Estereotipo

Elemento de destino

Interpretación de la transformación de UML en EJB

<<entity>>

Clase UML

Representa un bean de entidad

<<service>>

Clase UML

Representa un bean de sesión con una propiedad de estereotipo, hasState, que inicialmente está establecida en falso, lo que significa que el bean de sesión no tiene estado.

<<messageprocessor>>

Clase UML

Representa un bean dirigido por mensaje

<<ID>>

Atributo UML

Representa un campo CMP o BMO utilizado como parte de la clave principal de un bean de entidad.

<<query>>

Operación UML

Representa un método de consulta en un bean de entidad

 

El perfil de transformación EJB define también las restricciones siguientes:

 

 

Cuando se valida un modelo con el perfil de transformación EJB, estas restricciones generan avisos. Antes de ejecutar la transformación de UML en EJB, debe corregir los problemas que generan los avisos. Aunque los avisos no impiden que ejecute la transformación.

 

Pestañas de configuración de transformación de UML en EJB

 

La ventana de configuración de transformación EJB contiene seis pestañas: Destino, Entidad, Sesión, Avanzada, Correlación y Común. En este apartado se describe cómo afectan las tres primeras pestañas a la transformación EJB.

 

Pestaña Destino

 

Puede utilizar la pestaña Destino para seleccionar el proyecto EJB de destino en el que la transformación EJB genera los archivos de salida. Puede crear un contenedor de destino nuevo aunque haya disponible un proyecto EJB. Cada proyecto se asocia a un solo contenedor EJB. La transformación EJB soporta todas las versiones del contenedor EJB disponibles que proporciona el asistente de proyectos EJB.

La versión del contenedor del proyecto EJB de destino puede limitar las opciones disponibles en las pestañas Entidad y Sesión. Para obtener más información sobre las restricciones para cada tipo de contenedor EJB, consulte el apartado Contenedor EJB de destino.

 

Pestaña Entidad

Puede utilizar la pestaña Entidad para personalizar beans de entidad creados recientemente. Puede configurar dos opciones diferentes en la pestaña Entidad: Tipo de bean de entidad e Interfaz de bean de entidad. La figura siguiente muestra la pestaña Entidad en la ventana de configuración de transformación EJB:

 

 

 

En función de la versión del contenedor EJB del proyecto, sólo puede seleccionar determinadas combinaciones de propiedades antes de poder ejecutar la transformación EJB. La tabla siguiente lista los tipos de bean de entidad que soporta la transformación, las interfaces que soportan los beans de entidad y la selección de la interfaz por omisión:

 

Versión de contenedor EJB

Tipo de bean de entidad

Interfaces soportadas para beans de entidad

Selección por omisión

2.x

CMP 2.x

Local y remota

Sólo interfaces locales

2.x

CMP 1.1

Remota

Sólo interfaces remotas

2.x

BMP

Local y remota

Sólo interfaces locales

1.1

CMP 2.x

Ninguno

N/D

1.1

CMP 1.1

Remota

Sólo interfaces remotas

1.1

BMP

Remota

Sólo interfaces remotas

 

Las selecciones por omisión de la tabla reflejan el comportamiento por omisión del asistente para la creación del bean de entidad.

 

Si selecciona una combinación no válida de opciones, aparecerá un mensaje de error en la parte superior de la ventana de configuración de transformación EJB y el botón Ejecutar que ejecuta la transformación no estará disponible. Cuando seleccione una combinación válida de opciones, el botón Ejecutar pasa a estar disponible y el mensaje de error desaparece.

 

Pestaña Sesión

Puede utilizar la pestaña Sesión para personalizar la generación de interfaces para beans de sesión generados recientemente. La figura siguiente muestra la pestaña Sesión en la ventana de configuración de transformación EJB:

 

 

 

En función de la versión del contenedor EJB del proyecto, sólo puede seleccionar determinadas combinaciones de propiedades antes de poder ejecutar la transformación EJB. La tabla siguiente lista las interfaces que soporta la transformación para beans de sesión, en función de la versión del contenedor EJB, y la selección de la interfaz por omisión:

 

Versión de contenedor EJB

Interfaces soportadas para beans de sesión

Selección por omisión

1.1

Remota

Sólo interfaces remotas

2.0

Local y remota

Sólo interfaces remotas

2.1

Local y remota

Sólo interfaces remotas

 

Si selecciona una combinación no válida de opciones, aparecerá un mensaje de error en la parte superior de la ventana de configuración de transformación EJB y el botón Ejecutar que ejecuta la transformación no estará disponible. Cuando seleccione una combinación válida de opciones, el botón Ejecutar pasa a estar disponible y el mensaje de error desaparece.

 

Pestaña Avanzada

Para obtener información acerca de la pestaña Avanzada, consulte la documentación relacionada con la transformación de UML en Java.

 

Interpretación de objetos de origen

En este apartado se describe cómo interpreta la transformación de UML en EJB los elementos de un modelo UML y qué genera la transformación como salida.

Tipos primitivos

La transformación de UML en EJB interpreta los tipos primitivos del mismo modo que la transformación de UML en Java. Para obtener más información, consulte la documentación relacionada con la transformación de UML en Java.

 

Paquetes

La transformación de UML en EJB interpreta los paquetes del mismo modo que la transformación de UML en Java: los transforma en paquetes Java. Para obtener más información, consulte la documentación relacionada con la transformación de UML en Java.

 

Clases no marcadas

La transformación de UML en EJB interpreta las clases no marcadas del mismo modo que la transformación de UML en Java: las transforma en clases Java. Para obtener más información, consulte la documentación relacionada con la transformación de UML en Java.

 

Si una clase no marcada contiene atributos cuyo tipo pertenece a una clase con un estereotipo <<entity>>, <<service>> o <<messageprocessor>>, la transformación no generará los atributos. En su lugar, la transformación escribe un mensaje en el archivo de registro que enuncia que el atributo de origen no se transformará.

Interfaces no marcadas

La transformación de UML en EJB interpreta las interfaces no marcadas del mismo modo que la transformación de UML en Java: las transforma en interfaces Java. Para obtener más información, consulte la documentación relacionada con la transformación de UML en Java.

 

Si una interfaz no marcada contiene atributos cuyo tipo pertenece a una clase con un estereotipo <<entity>>, <<service>> o <<messageprocessor>>, la transformación no generará los atributos. En su lugar, la transformación escribe un mensaje en el archivo de registro que enuncia que el atributo de origen no se transformará.

Enumeración no marcada

La transformación de UML en EJB interpreta la enumeración no marcada del mismo modo que la transformación de UML en Java: la transforma en interfaces Java. Para obtener más información, consulte la documentación relacionada con la transformación de UML en Java.

 

Clases de <<entity>>

La transformación de UML en EJB transforma una clase que está marcada con el estereotipo <<entity>> en un bean de entidad CMP 2.x, CMP 1.1 o BMP cuyo nombre de bean es igual al nombre de la clase UML de origen. El tipo de bean de entidad generado corresponde a la opción que seleccione en la ventana de configuración de transformación EJB, en la pestaña Entidad.

 

La transformación siempre genera las siguientes clases Java para beans de entidad:

 

La transformación genera las siguientes clases Java cuando, en la pestaña Entidad, pulsa Sólo interfaces remotas:

 

La transformación genera las siguientes clases Java cuando, en la pestaña Entidad, pulsa Sólo interfaces locales:

 

La transformación genera las siguientes clases Java cuando, en la pestaña Entidad, pulsa Interfaces remotas y locales:

 

La transformación genera todas las clases de la carpeta de paquetes que se genera para el paquete principal de la clase UML de origen. Si crea un modelo UML sin paquetes, la transformación genera un paquete por omisión denominado ejbs.

 

La transformación genera los archivos de clase de bean y clase de clave en el árbol de origen del proyecto EJB de destino.

 

La transformación genera los cuatro archivos de interfaz en el árbol del origen del proyecto de cliente del proyecto EJB de destino. Si no existe ningún proyecto de cliente, la transformación genera los archivos de interfaz en el proyecto EJB de destino.

 

La transformación añade los datos que definen el bean de entidad al descriptor de despliegue (ejb-jar.xml).

 

Relaciones de generalización

Si la clase UML de origen para el bean de entidad tiene una relación de generalización (por ejemplo, una relación ampliada) con otra clase UML con el estereotipo <<entity>>, el bean de entidad que representa la clase pasa a ser la superclase EJB para el bean de entidad que se va a generar.

 

Los dos beans de entidad deben ser del mismo tipo. Por lo tanto, ambos beans de entidad deben ser CMP 2.x, CMP 1.1 o BMP. Por ejemplo, si el superbean es un bean de entidad CMP 2.x, todos los beans hijo deben ser beans de entidad CMP 2.x. Si el superbean no es del mismo tipo que el bean hijo esperado, la transformación genera el bean hijo sin una relación de generalización.

 

Relaciones de realización

Si la clase UML de origen para el bean de entidad tiene relaciones de realización (por ejemplo, relaciones de implementaciones) con elementos de interfaz, la interfaces que representan las interfaces de origen son implementadas por las cuatro interfaces (remota, inicial, local, de inicio local).

 

Atributos no marcados - CMP 2.x

La transformación transforma los atributos de la clase UML de origen en campos CMP del bean de entidad con las propiedades que se listan en la tabla siguiente:

 

 

Propiedad de campo CMP 2.x

Valor de campo CMP

Nombre

Nombre de atributo UML, con el primer carácter del nombre de campo en minúscula

Tipo

Tipo determinado a partir del tipo de atributo (Consulte la tabla Correlaciones de tipos.)

Campo de clave

Falso

Generar campo en clase de implementación de bean

Falso

Generar métodos get y set

Verdadero

Promover métodos get y set en interfaces locales

Verdadero (si existen interfaces locales)

Promover métodos get y set en interfaces remotas

Verdadero (si existen interfaces remotas)

IsArray

Verdadero si el atributo UML tiene un valor superior finito

 

Si el tipo de atributo pertenece a otro bean de entidad CMP 2.x, la transformación no transforma el atributo en un campo CMP, pero presupone que forma parte de una asociación, que debería transformarse en una relación EJB. Sin embargo, si el tipo de atributo pertenece a otro enterprise bean diferente al bean de entidad CMP 2.x, la transformación no transforma el atributo en un campo CMP o una asociación. En su lugar, la transformación escribe un mensaje en el archivo de registro que enuncia que el atributo de origen no se transformará.

 

Atributos no marcados - CMP 1.1

La transformación transforma los atributos de la clase UML de origen en campos CMP del bean de entidad con las propiedades que se listan en la tabla siguiente:

 

Propiedad de campo CMP 1.1

Valor de campo CMP

Nombre

Nombre de atributo UML, con el primer carácter del nombre de campo en minúscula

Tipo

Tipo determinado a partir del tipo de atributo (Consulte la tabla Correlaciones de tipos.)

Campo de clave

Falso

Generar campo en clase de implementación de bean

Falso

Generar métodos get y set

Verdadero

Promover métodos get y set en interfaces locales

Falso

Promover métodos get y set en interfaces remotas

Verdadero (siempre)

IsArray

Verdadero si el atributo UML tiene un valor superior finito

 

Si el tipo de atributo pertenece a otro bean de entidad o enterprise bean, la transformación no transforma el atributo en un campo CMP o una asociación. En su lugar, la transformación escribe un mensaje en el archivo de registro que enuncia que el atributo de origen no se transformará.

 

Atributos no marcados - BMP

La transformación transforma los atributos de la clase UML de origen en campos BMP del bean de entidad con las propiedades que se listan en la tabla siguiente:

 

Propiedad de campo BMP

Valor de campo BMP

Nombre

Nombre de atributo UML, con el primer carácter del nombre de campo en minúscula

Tipo

Tipo determinado a partir del tipo de atributo (Consulte la tabla Correlaciones de tipos.)

Campo de clave

Falso

Generar campo en clase de implementación de bean

Verdadero

Generar métodos get y set

Verdadero

Promover métodos get y set en interfaces locales

Verdadero (si existen interfaces locales)

Promover métodos get y set en interfaces remotas

Verdadero (si existen interfaces remotas)

IsArray

Verdadero si el atributo UML tiene un valor superior finito

 

Si el tipo de atributo pertenece a otro bean de entidad o EJB, la transformación no transforma el atributo en un campo BMP o una asociación. En su lugar, la transformación escribe un mensaje en el archivo de registro que enuncia que el atributo de origen no se transformará.

 

 

Atributos de <<id>> - CMP 2.x y CMP 1.1

La transformación también transforma atributos de la clase UML de origen que están marcados con el atributo de <<ID>> en campos CMP, pero con valores de propiedad diferentes, como se lista en la tabla siguiente. Estos campos CMP ayudan a dar formato a la clave principal.

 

Propiedad de campo CMP 2.x y CMP 1.1

Valor de campo CMP

Nombre

Nombre de atributo UML, con el primer carácter del nombre de campo en minúscula

Tipo

Tipo determinado a partir del tipo de atributo (Consulte la tabla Correlaciones de tipos.)

Campo de clave

Verdadero

Generar campo en clase de implementación de bean

Falso

Generar métodos get y set

Verdadero

Promover métodos get y set en interfaces locales

Falso

Promover métodos get y set en interfaces remotas

Falso

IsArray

Verdadero si el atributo UML tiene un valor superior finito

 

Si el tipo de atributo pertenece a otro bean de entidad o enterprise bean, la transformación no transforma el atributo en un campo CMP de clave o una asociación. En su lugar, la transformación escribe un mensaje en el archivo de registro que enuncia que el atributo de origen no se transformará.

 

Atributos de <<id>> - BMP

La transformación también transforma atributos de la clase UML de origen que están marcados con <<ID>> en campos BMP, pero con valores de propiedad diferentes, como se lista en la tabla siguiente. Estos campos BMP ayudan a dar formato a la clave principal.

 

Propiedad de campo BMP

Valor de campo BMP

Nombre

Nombre de atributo UML, con el primer carácter del nombre de campo en minúscula

Tipo

Tipo determinado a partir del tipo de atributo (Consulte la tabla Correlaciones de tipos.)

Campo de clave

Verdadero

Generar campo en clase de implementación de bean

Verdadero

Generar métodos get y set

Verdadero

Promover métodos get y set en interfaces locales

Falso

Promover métodos get y set en interfaces remotas

Falso

IsArray

Verdadero si el atributo UML tiene un valor superior finito

 

Si el tipo de atributo pertenece a otro bean de entidad o enterprise bean, la transformación no transforma el atributo en un campo BMP de clave o una asociación. En su lugar, la transformación escribe un mensaje en el archivo de registro que enuncia que el atributo de origen no se transformará.

 

Correlación de tipo de campo CMP y BMP

Como se ilustra en la siguiente tabla, la transformación genera los campos CMP y BMP con tipos basados en el tipo de atributo de origen:

 

Tipo de atributo UML

Tipo de campo CMP/BMP

booleano

booleano

byte

byte

char

char

flotante

flotante

entero

entero

largo

largo

corto

corto

Booleano

java.lang.Boolean

Byte

java.lang.Byte

Char

java.lang.Char

Float

java.lang.Float

Entero

java.lang.Integer

Long

java.lang.Long

Short

java.lang.Short

Cadena de caracteres

java.lang.String

otros

nombre calificado

 

Operaciones no marcadas

La transformación transforma operaciones no marcadas de la clase UML de origen en métodos empresariales del bean de entidad. Inicialmente, la operación se transforma del mismo modo que una operación en una clase UML no marcada. La transformación impone la denominación en minúsculas cambiando el primer carácter del nombre de método a minúscula si es un carácter en mayúsculas válido. La operación transformada se añade a las clases que se listan en la siguiente tabla, con algunas modificaciones.

 

Clase

Modificaciones de método

Clase de bean

Sin cambio

Interfaz local

Método de interfaz

Interfaz remota

Método de interfaz, emite java.rmi.RemoteException

 

Operaciones de <<consulta>> - CMP 2.x

La transformación transforma operaciones de <<consulta>> de la clase UML de origen en uno de los dos tipos de métodos de consulta: los métodos buscadores y los métodos de selección. Los métodos de selección sólo existen en los beans de entidad CMP 2.x.

 

La transformación genera métodos buscadores en las clases listadas en la siguiente tabla, con algunas modificaciones:

 

Clase

Modificaciones de método

Interfaz de inicio local

(si existen interfaces locales)

Interfaz de inicio remota

(si existen interfaces remotas)

  • Nombre de findXxx (Consulte la tabla Nombre de buscador.)
  • Emite javax.ejb.FinderException
  • Emite java.rmi.RemoteException

 

Nombre de buscador

 

Nombre de operación UML

Nombre de método buscador

xxx

findXxx

findXxx

findXxx

FindXxx

findXxx

 

Tipo de retorno de buscador de interfaz inicial

 

La transformación de Java ha analizado el tipo de retorno

Tipo de retorno del método buscador

Recopilación correlacionada (por ejemplo, Recopilación, Lista, Conjunto, etc.)

java.util.Collection

<nombre de clase de origen>[]

java.util.Collection

<nombre de clase de origen> O void

  • Nombre de interfaz local
  • Nombre de interfaz remota

<nombre de tipo definido por el usuario>[]

java.util.Collection

<nombre de clase no origen (por ejemplo, String, Integer, etc.)>[]

java.util.Collection

<nombre de tipo definido por el usuario>

Generar un método de selección en lugar de un método buscador

<nombre de clase no origen (por ejemplo, String, Integer, etc)>

Generar un método de selección en lugar de un método buscador

 

La transformación EJB crea una tarea que le indica que debe añadir manualmente una consulta al descriptor de despliegue para cada método buscador generado.

 

La transformación transforma una operación de consulta en un método de selección si la visibilidad de la operación es privada o si el tipo de retorno es diferente del nombre de la clase UML de origen y el tipo de bean de entidad es CMP 2.x.

 

Visibilidad de la operación

Tipo de retorno

Tipo de método

Privado

Igual al nombre de clase de origen

Seleccionar método

No es privado

Igual al nombre de clase de origen

Método buscador

Privado

No es el nombre de clase de origen

Seleccionar método

No es privado

No es el nombre de clase de origen

Seleccionar método

 

La transformación genera métodos de selección en la clase de bean con las modificaciones siguientes:

 

Selección de nombres

 

Nombre de operación UML

Nombre de método de selección

xxx

ejbSelectXxx

selectXxx

ejbSelectXxx

SelectXxx

ejbSelectXxx

ejbSelectXxx

ejbSelectXxx

 

Selección de tipos de retorno

 

La transformación de Java ha analizado el tipo de retorno

Seleccionar tipo de método de retorno

Recopilación correlacionada (por ejemplo, Recopilación, Lista, Conjunto, etc.)

Nombre totalmente calificado del tipo de recopilación (por ejemplo, java.util.Collection)

<nombre de clase de origen>[]

java.util.Collection

<nombre de clase de origen> O void

Nombre de interfaz local

<nombre de tipo definido por el usuario>[]

java.util.Collection

<nombre de clase no origen (por ejemplo, String, Integer, etc.)>[]

java.util.Collection

<nombre de tipo definido por el usuario>

nombre de tipo definido por el usuario

<nombre de clase no origen (por ejemplo, String, Integer, etc)>

nombre de clase no origen

 

La transformación EJB crea una tarea que le indica que debe añadir manualmente una consulta al descriptor de despliegue para cada método de selección generado.

 

Operaciones de <<consulta>> - CMP 1.1

La transformación transforma operaciones de <<consulta>> de la clase UML de origen en un tipo de método de consulta: métodos buscadores. Los beans de entidad CMP 1.1 no admiten métodos de selección, ya que sólo están disponibles para beans de entidad CMP 2.x. Por lo tanto, independientemente del tipo de retorno y la visibilidad de la operación de <<consulta>>, la transformación siempre genera un método buscador en la interfaz de inicio remoto del bean de entidad.

 

Como se ilustra en la siguiente tabla, la transformación siempre genera métodos buscadores en la interfaz de inicio remoto, con algunas modificaciones:

 

Clase

Modificaciones de método

Interfaz de inicio remota

 

Nombre de buscador de interfaz de inicio remoto

 

Nombre de operación UML

Nombre de método buscador

xxx

findXxx

findXxx

findXxx

FindXxx

findXxx

 

Tipo de retorno de buscador de interfaz de inicio remoto

 

La transformación de Java ha analizado el tipo de retorno

Tipo de retorno del método buscador

Recopilación correlacionada (por ejemplo, Recopilación, Lista, Conjunto, etc.)

java.util.Collection

<nombre de clase de origen>[]

java.util.Collection

<nombre de clase de origen> O void

Nombre de interfaz remota

<nombre de tipo definido por el usuario>[]

java.util.Collection

<nombre de clase no origen (por ejemplo, String, Integer, etc.)>[]

java.util.Collection

<nombre de tipo definido por el usuario>

Nombre de interfaz remota

<nombre de clase no origen (por ejemplo, String, Integer, etc)>

Nombre de interfaz remota

 

La transformación EJB crea una tarea que le indica que debe añadir manualmente una consulta al descriptor de despliegue para cada método buscador generado.

 

Operaciones de <<consulta>> - BMP

La transformación transforma operaciones de <<consulta>> de la clase UML de origen en un tipo de método de consulta: métodos buscadores. Los beans de entidad BMP, de cualquier versión, no admiten métodos de selección, ya que sólo están disponibles para beans de entidad CMP 2.x. Por lo tanto, independientemente del tipo de retorno y la visibilidad de la operación de <<consulta>>, la transformación siempre genera un método buscador en la clase de implementación de bean. Entonces, la transformación genera métodos buscadores en las interfaces existentes del bean de entidad.

 

Como se ilustra en la siguiente tabla, la transformación genera métodos buscadores en las clases siguientes, con algunas modificaciones:

 

Clase

Modificaciones de método

Interfaz de inicio local
(si existen interfaces locales)

Interfaz de inicio remota

(si existen interfaces remotas)

Clase de implementación de bean

 

Nombre de buscador de interfaz inicial

 

Nombre de operación UML

Nombre de método buscador

xxx

findXxx

findXxx

findXxx

FindXxx

findXxx

ejbFindXxx

findEjbFindXxx

EjbFindXxx

findEjbFindXxx

 

Nombre de buscador de clase de bean

 

Nombre de operación UML

Nombre de método buscador

xxx

ejbFindXxx

findXxx

ejbFindXxx

FindXxx

ejbFindXxx

ejbFindXxx

ejbFindEjbFindXxx

EjbFindXxx

ejbFindEjbFindXxx

 

Tipo de retorno de buscador de interfaz inicial

 

La transformación de Java ha analizado el tipo de retorno

Tipo de retorno del método buscador

Recopilación correlacionada (por ejemplo, Recopilación, Lista, Conjunto, etc.)

java.util.Collection

<nombre de clase de origen>[]

java.util.Collection

<nombre de clase de origen> O void

  • Nombre de interfaz local
  • Nombre de interfaz remota

<nombre de tipo definido por el usuario>[]

java.util.Collection

<nombre de clase no origen (por ejemplo, String, Integer, etc.)>[]

java.util.Collection

<nombre de tipo definido por el usuario>

  • Nombre de interfaz local
  • Nombre de interfaz remota

<nombre de clase no origen (por ejemplo, String, Integer, etc)>

  • Nombre de interfaz local
  • Nombre de interfaz remota

 

Tipo de retorno de buscador de clase de bean

 

La transformación de Java ha analizado el tipo de retorno

Tipo de retorno del método buscador

Recopilación correlacionada (por ejemplo, Recopilación, Lista, Conjunto, etc.)

java.util.Collection

<nombre de clase>[]

java.util.Collection

<nombre de clase> O void

Nombre de clase de clave

 

Clases internas

Omitidas.

 

Interfaces internas

Omitidas.

 

Clases de <<service>>

La transformación de UML en EJB transforma una clase con el estereotipo <<service>> en un bean de sesión gestionado por contenedores, sin estado o con estado cuyo nombre de bean es igual al nombre de la clase UML de origen. La transformación siempre genera las siguientes clases Java para beans de sesión:

 

La transformación genera las siguientes clases Java cuando, en la pestaña Sesión, pulsa Sólo interfaces remotas:

 

La transformación genera las siguientes clases Java cuando, en la pestaña Sesión, pulsa Sólo interfaces locales:

 

La transformación genera las siguientes clases Java cuando, en la pestaña Sesión, pulsa Interfaces remotas y locales:

 

La transformación genera todas las clases de la carpeta de paquetes que se genera para el paquete principal de la clase UML de origen. Si crea un modelo UML sin paquetes, la transformación crea un paquete por omisión denominado ejbs.

 

La transformación genera el archivo de clase de bean en el árbol de origen del proyecto EJB de destino.

 

La transformación genera los cuatro archivos de interfaz en el árbol del origen del proyecto de cliente del proyecto EJB de destino. Si no existe ningún proyecto de cliente, la transformación genera los archivos de interfaz en el proyecto EJB de destino.

 

La transformación añade los datos que definen el bean de sesión al descriptor de despliegue (ejb-jar.xml).

 

 

Propiedad de estereotipo - hasState

Cada clase UML con un estereotipo <<service>> tiene una propiedad de estereotipo denominada hasState. Cuando el valor de hasState es falso, la transformación genera dicha clase UML como un bean de sesión sin estado. En cambio, cuando el valor de hasState es verdadero, la transformación genera la clase UML como un bean de sesión con estado.

 

Nota: La propiedad de estereotipo sólo afecta a las clases UML que la transformación genera como beans de sesión nuevos.

 

Por omisión, la propiedad hasState tiene un valor de falso, que concuerda con los valores por omisión del asistente para la creación del bean de sesión.

 

Relaciones de generalización

Si la clase UML de origen para el bean de sesión tiene una relación de generalización (por ejemplo, una relación ampliada) con otra clase UML que tenga el estereotipo <<service>> y ese estereotipo tiene el mismo valor de propiedad hasState, el bean de sesión que representa la clase pasa a ser la superclase EJB para el bean de sesión que se va a generar.

 

Relaciones de realización

Si la clase UML de origen para el bean de sesión tiene relaciones de realización (por ejemplo, relaciones de implementaciones) con elementos de interfaz, la interfaces que representan las interfaces de origen son implementadas por las cuatro interfaces (remota, inicial, local, de inicio local).

 

Atributos

La transformación transforma los atributos de la clase UML de origen en propiedades Java de la clase de bean. Para obtener más información sobre cómo transformar atributos, consulte la documentación relacionada con la transformación de UML en Java. La transformación impone la denominación en minúsculas cambiando el primer carácter del nombre de propiedad a minúscula si es un carácter en mayúsculas válido.

 

 

Si el tipo de atributo pertenece a otro bean de entidad, la transformación EJB no genera un campo y una asociación para el bean de sesión. En su lugar, la transformación escribe un mensaje en el archivo de registro que enuncia que el atributo de origen no se transformará.

 

Operaciones

La transformación transforma las operaciones de la clase UML de origen en métodos empresariales del bean de sesión. Inicialmente, la operación se transforma del mismo modo que una operación en una clase UML no marcada. La transformación impone la denominación en minúsculas cambiando el primer carácter del nombre de método a minúscula si es un carácter en mayúsculas válido. La operación transformada se añade a las clases que se listan en la siguiente tabla, con algunas modificaciones.

 

Clase

Modificaciones de método

Clase de bean

Sin cambio

Interfaz local

Método de interfaz

Interfaz remota

Método de interfaz, emite java.rmi.RemoteException

 

La transformación aplica las reglas siguientes para determinar el tipo de retorno de la operación en función de los parámetros de esta:

 

Clases internas

Omitidas.

 

Interfaces internas

Omitidas.

 

Clases de <<messageprocessor>>

La transformación de UML en EJB transforma una clase con el estereotipo <<messageprocessor>> en un bean dirigido por mensaje cuyo nombre de bean es igual al nombre de la clase UML de origen y que tiene datos por omisión. La transformación genera la clase Java siguiente:

 

La transformación genera la clase de la carpeta de paquetes que se genera para el paquete principal de la clase UML de origen. Si crea un modelo UML sin paquetes, la transformación crea un paquete por omisión denominado ejbs.

 

La transformación genera el archivo de clase de bean en el árbol de origen del proyecto EJB de destino.

 

La transformación añade los datos que definen el bean dirigido por mensaje al descriptor de despliegue (ejb-jar.xml).

 

Relaciones de generalización

Si la clase UML de origen para el bean dirigido por mensaje tiene una relación de generalización (por ejemplo, una relación ampliada) con otra clase UML con el estereotipo <<messageprocessor>>, el bean dirigido por mensaje que representa la clase pasa a ser la superclase EJB para el bean de entidad que se va a generar.

 

Relaciones de realización

Omitidas.

 

Atributos

La transformación transforma los atributos de la clase UML de origen en propiedades Java de la clase de bean. Para obtener más información sobre cómo transformar atributos, consulte la documentación relacionada con la transformación de UML en Java. Si el tipo de atributo pertenece a otro bean de entidad, la transformación EJB no genera un campo y una asociación para el bean de sesión. En su lugar, la transformación escribe un mensaje en el archivo de registro que enuncia que el atributo de origen no se transformará.

 

Operaciones

La transformación transforma las operaciones de la clase UML de origen en métodos Java típicos, como si el bean dirigido por mensaje fuera una clase Java.

 

Clases internas

Omitidas.

 

Interfaces internas

Omitidas.

 

Asociaciones

Normalmente, la transformación transforma asociaciones del mismo modo que la transformación de UML en Java: transforma los atributos de punto de inflexión en propiedades Java.

 

Si un punto de inflexión de la asociación es una clase con el estereotipo<<entity>>, <<service>> o <<messageprocessor>>, la transformación no transforma dicho punto de inflexión. En su lugar, la transformación escribe un mensaje en el archivo de registro del directorio de metadatos que enuncia que la propiedad del punto de inflexión no se ha transformado. Una excepción de esto tiene lugar cuando la asociación se produce entre dos clases con los estereotipos <<entity>> y ambas clases se generan como beans CMP 2.x. En ese caso, la transformación transforma la asociación UML en una relación EJB 2.0, que también se conoce como relación gestionada por el contenedor (CMR). En la tabla siguiente se muestran las correlaciones existentes entre las propiedades de asociación y las propiedades EJB:

 

Propiedad de la asociación

Propiedad de la relación EJB

End1

BeanA

End2

BeanB

Nombre de End1

Nombre de BeanB CMR

Nombre de End2

Nombre de BeanA CMR

Navegabilidad de End1

Navegabilidad de BeanB

Navegabilidad de End2

Navegabilidad de BeanA

  • Valor superior de End1 = 1
  • Valor superior de End1 = -1
  • Multiplicidad de BeanB = 1
  • Multiplicidad de BeanB = -1, tipo BeanA CMR = java.lang.Collection
  • Valor superior de End2 = 1
  • Valor superior de End2 = -1
  • Multiplicidad de BeanA = 1
  • Multiplicidad de BeanA = -1, tipo BeanB CMR = java.lang.Collection

 

La figura siguiente ilustra dos clases UML con los estereotipos <<entity>>. La asociación entre las clases se genera en un CMR si la transformación genera ambas clases de entidad como beans de entidad CMP 2.x.

 

 

 

Una vez tiene lugar la transformación, el descriptor de despliegue tiene una entrada para describir el CMR entre AEntity y BEntity. Tal y como ilustra la figura siguiente, el descriptor de despliegue del proyecto puede mostrar la asociación entre los dos beans de entidad CMP 2.x:

 

 

 

 

 

Referencias EJB

En la siguiente tabla se muestra cómo la transformación transforma dependencias y genera referencias EJB para clases con un estereotipo <<entity>>, <<service>> o <<messageprocessor>>.

 

Origen de dependencia UML

Destino de dependencia UML

Destino EJB

Clase de <<entity>>

Clase de <<entity>>

Referencia EJB

Clase de <<entity>>

Clase de <<service>>

Referencia EJB

Clase de <<messageprocessor>>

Clase de <<entity>>

Referencia EJB

Clase de <<messageprocessor>>

Clase de <<service>>

Referencia EJB

Clase de <<service>>

Clase de <<entity>>

Referencia EJB

Clase de <<service>>

Clase de <<service>>

Referencia EJB

 

 

 

 

Casos de ejemplo de reaplicación

Cuando un proyecto de destino de Java 2 Platform, Enterprise Edition (J2EE) incluye, por lo menos, un bean con el mismo nombre y espacio de nombres que una clase UML en la transformación, se puede producir un caso de ejemplo de reaplicación. Un caso de ejemplo de reaplicación se produce cuando el tipo de enterprise bean existente coincide con el tipo de enterprise bean que se va a generar para la clase correspondiente en el modelo UML.

 

Cuando el tipo de enterprise bean que se va a generar es incompatible con el tipo de enterprise bean existente, se produce un caso de ejemplo de conflicto. En un caso de ejemplo de conflicto, la transformación de UML en EJB no actualiza el bean existente y no genera un enterprise bean nuevo.

 

En la siguiente tabla se lista la respuesta esperada de la transformación a los posibles casos de ejemplo de reaplicación para los beans de entidad CMP 2.x:

 

Enterprise bean que se va a generar

Enterprise bean existente

Caso de ejemplo esperado

Respuesta de la transformación

CMP 2.x

CMP 2.x

Reaplicación

Actualizar campos y métodos CMP

CMP 2.x

CMP 1.1

Reaplicación

Actualizar campos y métodos CMP como si se tratase de un caso de ejemplo de reaplicación normal de CMP 1.1 a CMP 1.1

CMP 2.x

BMP

Reaplicación

Actualizar campos y métodos BMP como si se tratase de un caso de ejemplo de reaplicación normal de BMP a BMP

CMP 2.x

Sesión (con estado o sin estado)

Conflicto

Dejar el bean de sesión intacto

CMP 2.x

Dirigido por mensaje

Conflicto

Dejar el bean dirigido por mensaje intacto

 

En la siguiente tabla se lista la respuesta esperada de la transformación a los posibles casos de ejemplo de reaplicación para los beans de entidad CMP 1.1:

 

Enterprise bean que se va a generar

Enterprise bean existente

Caso de ejemplo esperado

Respuesta de la transformación

CMP 1.1

CMP 2.x

Reaplicación

Actualizar campos y métodos CMP como si se tratase de un caso de ejemplo de reaplicación normal de CMP 2.x a CMP 2.x

CMP 1.1

CMP 1.1

Reaplicación

Actualizar campos y métodos CMP

CMP 1.1

BMP

Reaplicación

Actualizar campos, métodos y asociaciones BMP como si se tratase de un caso de ejemplo de reaplicación normal de BMP a BMP

CMP 1.1

Sesión (con estado o sin estado)

Conflicto

Dejar el bean de sesión intacto

CMP 1.1

Dirigido por mensaje

Conflicto

Dejar el bean dirigido por mensaje intacto

 

En la siguiente tabla se lista la respuesta esperada de la transformación a los posibles casos de ejemplo de reaplicación para los beans de entidad BMP:

 

Enterprise bean que se va a generar

Enterprise bean existente

Caso de ejemplo esperado

Respuesta de la transformación

BMP

CMP 2.x

Reaplicación

Actualizar campos y métodos CMP como si se tratase de un caso de ejemplo de reaplicación normal de CMP 2.x a CMP 2.x

BMP

CMP 1.1

Reaplicación

Actualizar campos y métodos CMP como si se tratase de un caso de ejemplo de reaplicación normal de CMP 1.1 a CMP 1.1

BMP

BMP

Reaplicación

Actualizar campos y métodos BMP

BMP

Sesión (con estado o sin estado)

Conflicto

Dejar el bean de sesión intacto

BMP

Dirigido por mensaje

Conflicto

Dejar el bean dirigido por mensaje intacto

 

En la siguiente tabla se lista la respuesta esperada de la transformación a los posibles casos de ejemplo de reaplicación para los beans de sesión:

 

Enterprise bean que se va a generar

Enterprise bean existente

Caso de ejemplo esperado

Respuesta de la transformación

Sesión (con estado o sin estado)

CMP 2.x

Conflicto

Dejar el bean CMP 2.x intacto

Sesión (con estado o sin estado)

CMP 1.1

Conflicto

Dejar el bean CMP 1.1 intacto

Sesión (con estado o sin estado)

BMP

 

Dejar el bean BMP intacto

Sesión (con estado)

Sesión

(sólo con estado)

Reaplicación

Actualizar los campos y métodos del bean de sesión

Sesión (con estado)

Sesión

(sólo sin estado)

Conflicto

Dejar el bean de sesión sin estado intacto

Sesión (sin estado)

Sesión

(sólo con estado)

Conflicto

Dejar el bean de sesión con estado intacto

Sesión (sin estado)

Sesión

(sólo sin estado)

Reaplicación

Actualizar los campos y métodos del bean de sesión

Sesión (con estado o sin estado)

Dirigido por mensaje

Conflicto

Dejar el bean dirigido por mensaje intacto

 

En la siguiente tabla se lista la respuesta esperada de la transformación a los posibles casos de ejemplo de reaplicación para los beans dirigidos por mensaje:

 

Enterprise bean que se va a generar

Enterprise bean existente

Caso de ejemplo esperado

Respuesta de la transformación

Dirigido por mensaje

CMP 2.x

Conflicto

Dejar el bean dirigido por mensaje intacto

Dirigido por mensaje

CMP 1.1

Conflicto

Dejar el bean dirigido por mensaje intacto

Dirigido por mensaje

BMP

Conflicto

Dejar el bean dirigido por mensaje intacto

Dirigido por mensaje

Sesión (con estado o sin estado)

Conflicto

Dejar el bean dirigido por mensaje intacto

Dirigido por mensaje

Dirigido por mensaje

Reaplicación

Actualizar los campos y métodos del bean dirigido por mensajes

 

En la siguiente tabla se lista la respuesta esperada de la transformación a los posibles casos de ejemplo de reaplicación para clases UML no marcadas:

 

Estereotipo en clase UML

Enterprise bean existente

Caso de ejemplo esperado

Respuesta de la transformación

No marcado

CMP 2.x

Reaplicación

Actualizar los campos y los métodos del bean de entidad CMP 2.x en la interfaz remota existente

No marcado

CMP 1.1

Reaplicación

Actualizar los campos y los métodos del bean de entidad CMP 1.1 en la interfaz remota existente

No marcado

BMP

Reaplicación

Actualizar los campos y los métodos del bean de entidad BMP en la interfaz remota existente

No marcado

Sesión (con estado o sin estado)

Reaplicación

Actualizar los campos y los métodos de la sesión en la interfaz remota existente

No marcado

Dirigido por mensaje

Reaplicación

Generar una clase Java típica

 

En los casos de ejemplo de reaplicación para clases UML no marcadas, las actualizaciones de código de la interfaz remota del enterprise bean existente provocan errores de build en el proyecto EJB. Estos errores de build se producen porque el código actualizado en la interfaz remota no se ajusta a las especificaciones EJB para interfaces remotas. Si tiene la intención de sobrescribir el enterprise bean completo, debe eliminar el enterprise bean existente antes de ejecutar la transformación EJB.

 

Explicación detallada de la respuesta de la transformación

 

En este apartado se trata en más detalle cómo responde la transformación a un caso de ejemplo de reaplicación y proporciona más información sobre qué esperar de la transformación después de una reaplicación.

 

Beans de entidad CMP 2.x

 

Si se produce un caso de ejemplo de reaplicación para un bean de entidad CMP 2.x, se pueden originar las siguientes modificaciones:

 

Las modificaciones siguientes no deben producirse:

 

Beans de entidad CMP 1.1

 

Si se produce un caso de ejemplo de reaplicación para un bean de entidad CMP 1.1, se pueden originar las siguientes modificaciones:

 

Las modificaciones siguientes no deben producirse:

 

 

Beans de entidad BMP

 

Si se produce un caso de ejemplo de reaplicación para un bean de entidad BMP, se pueden originar las siguientes modificaciones:

 

Las modificaciones siguientes no deben producirse:

 

Beans de sesión sin estado y con estado

 

Si se produce un caso de ejemplo de reaplicación para un bean de sesión, se pueden originar las siguientes modificaciones:

 

Las modificaciones siguientes no deben producirse:

 

Beans dirigidos por mensaje

 

Si se produce un caso de ejemplo de reaplicación para un bean dirigido por mensaje, se pueden originar las siguientes modificaciones:

 

Las modificaciones siguientes no deben producirse:

 

Soporte para procesar relaciones entre elementos de UML y enterprise beans visualizados o clases Java

 

En la siguiente tabla se muestra cómo la transformación de UML en EJB procesa las relaciones:

 

Elemento de UML de origen

Elemento de destino visualizado

Tipo de relación

Resultado de la transformación

Clase con estereotipo <<entity>> o <<service>>

Interfaz Java (interfaz UML)

Implementación

El enterprise bean generado implementa la interfaz visualizada

Clase con estereotipo <<entity>> o <<service>>

Interfaz Java (interfaz UML)

Realización

El enterprise bean generado implementa la interfaz visualizada

Clase con estereotipo <<entity>>

Bean de entidad visualizado (componente UML)

Asociación

Relación CMR

Clase con estereotipo <<entity>>, <<service>> o <<messageprocessor>>

Bean de entidad o bean de sesión visualizados (componente UML)

Dependencia

Referencia EJB

 

Soporte para las tecnologías de transformación comunes

 

Integración con la funcionalidad de equipo

 

La transformación de UML en EJB da soporte a la integración con la funcionalidad de equipo . Cuando ejecuta una transformación con un proyecto de destino en un entorno con control de origen, el sistema le indica que añada nuevos archivos al control de origen y que compruebe los archivos existentes.

Correlación de transformación

La transformación de UML en EJB proporciona un soporte de correlación similar al que proporciona la transformación de UML en Java. Para obtener más información acerca de cómo establecer y utilizar un modelo de correlación, consulte la documentación relacionada con la transformación de UML en Java.

 

Cuando las clases de origen están marcadas para transformarse en enterprise beans, la transformación utiliza el nombre correlacionado de la clase de origen como nombre de bean para el enterprise bean generado.

Relaciones de origen con destino

 

Si la característica Generar relaciones de origen con destino está habilitada, la transformación añade etiquetas a la documentación de la API de las interfaces y las clases Java generadas. Las etiquetas contienen información que habilita a las herramientas para rastrear los archivos generados en el elemento de origen UML original.

 

Para los enterprise beans generados, todos los archivos Java que genera la transformación para un enterprise bean tienen las etiquetas de documentación de la API de origen con destino que apuntan a la única clase de origen UML.

 

Condiciones de uso | Información de retorno
(C) Copyright IBM Corporation 2004, 2005. Reservados todos los derechos.