Consideraciones de módulo EJB 3.x
Cuando se utilizan módulos EJB (Enterprise JavaBeans) 3.x, tenga en cuenta las consideraciones siguientes.
La versión 8.0 no da soporte a beans de entidad 1.x y 2.x en módulos EJB de nivel 3.x.
IBM® WebSphere Application Server versión 8.0 no da soporte al uso de beans de entidad de persistencia gestionada por beans (BMP) y de persistencia gestionada por contenedor (CMP) 1.x y 2.x en los módulos del nivel EJB 3.x. Los beans de entidad EJB pueden seguir utilizándose en la versión 8.0, pero deben empaquetarse en un módulo del nivel EJB 2.1 o anterior.
Las aplicaciones Java™ Platform, Enterprise Edition (Java EE) empaquetadas con bean de entidad EJB en los módulos del nivel 3.x de EJB no pueden instalarse en la versión 8.0.
- El archivo JAR de EJB contiene los datos de configuración en un archivo ejb-jar.xml con una especificación de cabecera EJB 3.0 o EJB 3.1. Por ejemplo:
<ejb-jar id="ejb-jar_ID" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd">
- El archivo JAR de EJB contiene beans con anotaciones fuente de tipo EJB 3.x que proporcionan datos de configuración y no contiene un archivo de descriptor de despliegue ejb-jar.xml.
Debe volver a empaquetar los módulos EJB 3.x utilizando módulos EJB 2.x y módulos anteriores. De lo contrario, la instalación de cualquier aplicación que contenga beans de entidad fallará.
Anotaciones
Considere el uso de anotaciones en lugar de descriptores de despliegue, o ambos. Consulte el tema Anotaciones de metadatos EJB 3.x para obtener más información sobre las anotaciones.
Módulo EJB
La versión 8.0 de WebSphere Application Server admite archivos JAR (archivadores Java) del módulo EJB con un descriptor de despliegue ejb-jar.xml declarado a nivel 1.1, 2.0, 2.1, 3.0 o 3.1, o sin ningún descriptor de despliegue ejb-jar.xml. Si no hay presente un descriptor de despliegue, se asume que el módulo EJB es de nivel 3.0 o superior.
Los módulos EJB que contienen beans EJB 3.x se deben declarar para estar en el nivel EJB 3.0 o EJB 3.1. Esto se puede conseguir (estableciendo el nivel del descriptor de despliegue ejb-jar.xml en 3.0 o 3.1, o asegurándose de que el módulo no contenga ningún descriptor de despliegue ejb-jar.xml. Si el nivel del módulo es 2.1 o anterior, no se realiza ninguna función específica de EJB 3.x como por ejemplo la exploración de anotaciones o la inyección de recursos.
No se da soporte a los beans de entidad en los módulos de nivel de EJB 3.x. Debe colocar los beans de entidad en módulos EJB en el nivel 2.1 o anterior.
Si desea empaquetar un módulo EJB 3.x con un descriptor de despliegue, existen distintas formas de hacerlo. Empaquete un módulo EJB 3.x con una sesión y beans controlados por mensajes exclusivamente de estilo EJB 3.x; con una sesión y beans controlados por mensajes exclusivamente de estilo EJB 2.1, o una combinación de beans de estilo 2.1 y 3.x. El descriptor de despliegue XML debe ser un descriptor de despliegue de la versión 3.0 o 3.1. Es necesario que los beans de entidad 2.1 se empaqueten en módulos con descriptores de despliegue 2.1. Los módulos EJB que contienen beans EJB 3.x deben estar en el nivel de especificación EJB 3.0 o EJB 3.1 al ejecutarse en el producto. Prepare el módulo EJB para que dé soporte a beans EJB 3.x estableciendo el nivel del descriptor de despliegue ejb-jar.xml en 3,0.ó 3.1, o puede asegurarse de que el módulo no contenga un descriptor de despliegue ejb-jar.xml. Si el nivel del módulo es EJB 2.1 o anterior, ninguna función 3.x EJB, incluyendo la exploración de anotaciones o la inyección de recursos, se realizará durante el tiempo de ejecución.
Módulo de cliente de aplicaciones Java EE
El producto proporciona soporte para módulos de clientes de aplicaciones Java EE. De forma adicional, da soporte a la inyección de referencias EJB en componentes de cliente si la inyección se define mediante la anotación @EJB.
Definición de una referencia ejb-ref a una interfaz de empresa EJB 3.x desde un descriptor de componente de cliente Java EE
Es posible definir un ejb-ref desde un descriptor application-client.xml que apunte a una interfaz de empresa EJB 3.x. Se accede a las interfaces de empresa EJB 3.x directamente sin la utilización de una ubicación inicial, pero el elemento ejb-ref de Java EE requiere que se especifique un tipo de interfaz inicial. Por lo tanto, debe incluir la stanza <home></home> en la definición ejb-ref, pero especificar un valor nulo tal como se muestra en el ejemplo. Como valor de una stanza <remote>, especifique el nombre de clase de la interfaz de empresa EJB 3.x. Finalmente, cuando establezca el valor de enlace, durante la instalación de la aplicación o mediante las herramientas, especifique la ubicación donde se ha enlazado la interfaz de empresa EJB 3.x.
<ejb-ref id="EJBRef_1">
<ejb-ref-name>java_comp-env_name_of_ref</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home></home>
<remote>com.ejbs.business.interface.class.name</remote>
</ejb-ref>
La sección correspondiente del archivo ibm-application-client-bnd.xmi se parece al ejemplo de código siguiente. Aquí se utiliza un patrón de enlace EJB predeterminado; los convenios de enlaces EJB predeterminados se describen en el tema
sobre soporte de enlaces de aplicación EJB 3.x. <ejbRefBindings xmi:id="EjbRefBinding_1"
jndiName=EJB3App/EJB3Mod.jar/MyBean##com.ejbs.business.interface.class.name">
<bindingEjbRef href="application-client.xml#EjbRef_1"/>
</ejbRefBindings>