Enlaces de aplicación
Para que se pueda iniciar una aplicación instalada en un servidor de aplicaciones, todas las referencias de EJB (enterprise bean) y las referencias de recursos definidas en la aplicación deben estar enlazadas con los artefactos reales (enterprise beans o recursos) definidos en el servidor de aplicaciones.
Cuando se definen enlaces, se especifican nombres JNDI (Java™ Naming and Directory Interface) para los artefactos a los que se puede hacer referencia y a los que se hace referencia en una aplicación. Los valores de jndiName especificados para los artefactos deben ser nombres de búsqueda calificados. Un ejemplo de artefacto referenciable es un EJB definido en una aplicación. Un ejemplo de artefacto referido es una referencia de EJB o de recurso utilizada por la aplicación.
Las definiciones de enlaces se almacenan en los archivos ibm-xxx-bnd.xml o ibm-xxx-bnd.xmi de una aplicación. Las definiciones de enlace de la versión 7.0 dan soporte a archivos con el sufijo de XML para los módulos EJB 3.x y web 2.5, y posteriores. Los módulos anteriores a Java EE 5 siguen utilizando los archivos de definición de enlace con el sufijo de XMI como en las versiones anteriores de WebSphere Application Server. xxx puede ser ejb-jar, web, application o application-client.
Consulte la siguiente información sobre enlaces:
Cuándo se pueden definir los enlaces
Puede definir enlaces:
- Durante el desarrollo de la aplicación
Un desarrollador de aplicaciones puede crear definiciones de enlace en los archivos ibm-xxx-bnd.xml para los módulos EJB 3.x y web 2.5, y posteriores, y en los archivos ibm-xxx-bnd.xmi para los módulos anteriores a Java EE 5. El desarrollador de aplicaciones puede crear los archivos mediante una herramienta como por ejemplo la herramienta IBM® Rational Developer o, para los módulos EJB 3.x o Web 2.5 y posteriores, un editor XML o de texto. A continuación, el desarrollador completa la aplicación empresarial (archivo .ear) con enlaces con un desplegador o ensamblador de aplicaciones. Cuando se ensambla la aplicación, el ensamblador no modifica los enlaces. Del mismo modo, cuando se instala la aplicación en un servidor al que da soporte WebSphere Application Server, el desplegador no modifica ni altera temporalmente los enlaces, ni genera enlaces predeterminados, a menos que sea necesario realizar cambios en los enlaces para que la aplicación se despliegue correctamente.
- Durante el ensamblaje de aplicaciones
Un ensamblador de aplicaciones puede definir enlaces en anotaciones o descriptores de despliegue de una aplicación. Los módulos Java EE 5 o posteriores contienen anotaciones en el código fuente. Para declarar una anotación, se coloca un ensamblador de aplicaciones delante de una palabra clave con un carácter @ (signo "arroba"). Los enlaces de los módulos anteriores a Java EE 5 se especifican en la sección Enlaces de WebSphere de un editor de descriptores de despliegue. Si se modifican los descriptores de despliegue, se pueden cambiar las definiciones de enlace en los archivos ibm-xxx-bnd.xmi creados cuando se desarrolla la aplicación. Después de definir los enlaces, el ensamblador proporciona la aplicación a un desplegador. Cuando se instala la aplicación en un servidor al que da soporte WebSphere Application Server, el desplegador no modifica ni altera temporalmente los enlaces, ni genera enlaces por omisión, a menos que sea necesario realizar cambios en los enlaces para desplegar la aplicación.
- Durante la instalación de
la aplicación
Un desplegador de aplicaciones o un administrador del servidor puede modificar los enlaces cuando se instala la aplicación en un servidor soportado por WebSphere Application Server, utilizando la consola de administración. Se pueden especificar nuevas definiciones de enlaces en las páginas del asistente de instalación.
Además, un desplegador o administrador puede optar por generar enlaces por omisión durante la instalación de una aplicación. Si selecciona Generar enlaces por omisión durante la instalación de la aplicación indica al producto que rellene los enlaces incompletos en la aplicación con valores predeterminados. Los enlaces existentes no sufrirán ninguna modificación.
Restricción: No puede definir o alterar temporalmente enlaces durante la instalación de aplicación para los clientes de aplicación. Debe definir los enlaces de los módulos de cliente de aplicaciones durante el ensamblaje y almacenar los enlaces en el archivo ibm-application-client-bnd.xmi. - Durante la configuración de una
aplicación instalada
Una vez instalada una aplicación en un servidor soportado por WebSphere Application Server, el desplegador de aplicaciones o el administrador del servidor puede modificar los enlaces cambiando los valores en las páginas de la consola de administración como, por ejemplo, en aquéllas a las que se accede desde la página de valores de la aplicación de empresa.
Enlaces necesarios
Para poder desplegar correctamente una aplicación, se deben definir enlaces para las referencias con los siguientes artefactos:
- Nombres JNDI de EJB
- Para cada EJB 2.1 o enterprise bean (EJB) anterior, debe especificar un nombre
JNDI. El nombre se utiliza para enlazar una entrada en el espacio de nombres
JNDI global para el objeto inicial de EJB. Por ejemplo, el nombre JNDI de un EJB Product de una aplicación Store puede ser
store/ejb/Product.
La definición de enlace se almacena en el archivo
META-INF/ibm-ejb-jar-bnd.xmi.
Si un desplegador elige generar enlaces por omisión cuando instala la aplicación, el asistente de instalación asigna nombres JNDI de EJB con el formato prefix/nombre_EJB a los enlaces incompletos. El prefijo por omisión es ejb, pero se puede alterar temporalmente. El nombre_EJB es el especificado en el código <ejb-name> del descriptor de despliegue.
Durante y después de la instalación de aplicación, se pueden especificar nombres JNDI de EJB en la página Proporcionar nombres JNDI para beans. Tras la instalación, pulse en la consola administrativa.
No es necesario especificar nombres de enlaces JNDI para cada una de las ubicaciones de inicio o interfaces de empresa EJB 3.x en los enterprise beans ya que el contenedor EJB asigna enlaces por omisión.
- Orígenes de datos de beans de entidad
- Los beans de entidad, como los beans de persistencia gestionada por contenedor (CMP)
almacenan datos persistentes en los almacenes de datos. Con beans CMP, el contenedor de EJB gestiona el estado de
persistencia de los beans. Especifique qué almacén de datos utiliza un
bean enlazando un módulo EJB o un enterprise bean individual con un origen de datos. Si enlaza un módulo EJB con un origen de datos,
todos los beans de entidad de ese módulo utilizarán el mismo origen de datos para la
persistencia.
Un ejemplo de nombre JNDI de un origen de datos Store de una aplicación Store puede ser store/jdbc/store. Para los módulo anteriores a Java EE 5, la definición de enlace se almacena en archivos de enlace IBM como ibm-ejb-jar-bnd.xmi. Un desplegador también puede especificar si la autenticación se maneja a nivel de contenedor o a nivel de aplicación.
La versión 8.x de WebSphere Application Server da soporte a beans CMP en los módulos EJB 2.x o 1.x. La versión 8.x no da soporte a beans CMP de los módulos EJB 3.0.
Si un desplegador elige generar enlaces predeterminados cuando instala la aplicación, el asistente de instalación genera lo siguiente para los enlaces incompletos:
- Para los archivos .jar de EJB 2.x, enlaces de fábrica de conexiones a partir del nombre JNDI y la información de autorización que se han especificado
- Para los archivos .jar de EJB 1.1, enlaces de origen de datos a partir del nombre JNDI, el nombre de usuario y la contraseña del origen de datos que se han especificado
Los enlaces generados proporcionan valores de fábrica de conexiones por omisión para cada archivo .jar de EJB 2.x y los valores de origen de datos por omisión de cada archivo .jar de EJB 1.1 en la aplicación que se está instalando. No se generará ningún enlace de origen de datos o de fábrica de conexiones a nivel de bean a menos que se especifiquen en la regla de estrategia personalizada proporcionada durante la generación de enlaces.
Durante y después de la instalación de aplicación, puede correlacionar orígenes de datos con beans de entidad 2.x en la página de orígenes de datos de bean CMP 2.x y en la página de orígenes de datos de bean de entidad 2.x. Después de la instalación, pulse Orígenes de datos de bean CMP 2.x o Orígenes de datos de bean de entidad 2.x. Puede correlacionar orígenes de datos con beans de entidad 1.x en la página Correlacionar orígenes de datos para todos los beans CMP 1.x y en la página Proporcionar correlación de orígenes de datos predeterminados para módulos que contienen beans de entidad 1.x. Después de la instalación, acceda a las páginas de la consola de la misma forma que para los beans CMP 2.x, sólo que pulsando los enlaces de los beans CMP 1.x.
en la consola administrativa. A continuación, seleccione - ID de programa de fondo para módulos EJB
- Si un archivo .jar de EJB que define los beans CMP contiene correlaciones para varias bases de datos de programas de fondo, especifique el ID de programa de fondo adecuado que determina las clases de persistencia que se cargan durante la ejecución.
Especifique el ID de programa de fondo durante la instalación de la aplicación. No puede seleccionar un ID de programa de fondo después de instalar la aplicación en un servidor.
Para habilitar los ID de programa de fondo para módulos de EJB individuales:
- Durante la instalación de aplicación, seleccione Desplegar enterprise beans en la página Seleccionar las opciones de instalación. La selección de Desplegar enterprise beans le permite acceder a la página Facilitar opciones para efectuar el despliegue de EJB.
- En la página Facilitar opciones para efectuar el despliegue de EJB, establezca el tipo de base de datos en "" (nulo).
Durante la instalación de aplicación, si selecciona Desplegar enterprise beans en la página Seleccionar las opciones de instalación y especifica un tipo de base de datos para la herramienta de despliegue EJB en la página Facilitar opciones para efectuar el despliegue de EJB, el tipo de base de datos elegido se graba encima de los ID de programa de fondo definidos anteriormente para todos los módulos EJB.
El tipo de base de datos por omisión es DB2UDB_V81.
La herramienta de despliegue EJB no se ejecuta durante la instalación de los módulos EJB 3.0 o posteriores.
Para obtener información acerca de las bases de datos de programa de fondo, consulte la documentación de la Versión 8.5.5 sobre la herramienta de despliegue EJB y el mandato ejbdeploy.
- Referencias de EJB
- Una referencia de enterprise bean (EJB) es un nombre lógico utilizado para
localizar la interfaz inicial de un enterprise bean. Las referencias de EJB se especifican durante
el despliegue. En el tiempo de ejecución, las referencias de EJB se enlazan con la
ubicación física (el nombre JNDI global) de los enterprise beans en el entorno
operativo de destino. Las referencias de EJB están disponibles en el subcontexto de denominación
java:comp/env/ejb de Java o en otro
espacio de nombres java: si el nombre de referencia es un URL
java:module, java:app
o java:app. Las referencias de EJB con nombres de URL se enlazan al espacio de nombres correspondiente dependiendo del URL.
El producto asigna valores JNDI predeterminados para destinos de referencia de EJB 3.9 incompletos o los resuelve automáticamente.
Para cada referencia de EJB de EJB 2.1 o anterior, debe especificar un nombre JNDI. Un ejemplo de nombre JNDI de una referencia de EJB Supplier en una aplicación Store puede ser store/ejb/Supplier. La definición de enlace se almacena en archivos de enlace IBM como ibm-ejb-jar-bnd.xmi. Cuando el EJB al que se hace referencia también se despliega en el mismo servidor de aplicaciones, puede especificar un nombre JNDI de ámbito de servidor. Pero si el EJB al que se hace referencia se despliega en otro servidor de aplicaciones o si se define ejb-ref en un módulo de cliente de aplicaciones, deberá especificar el nombre JNDI global de ámbito de célula.
Si un desplegador elige generar enlaces predeterminados cuando instala la aplicación, el asistente de instalación enlaza referencias de EJB de la siguiente manera: si se encuentra un <ejb-link>, éste tiene preferencia. Si el ejb-name de un EJB definido en la aplicación coincide con el nombre de ejb-ref, se elige ese EJB. De lo contrario, si se encuentra un EJB exclusivo que coincida con una interfaz de factoría (o factoría local) como bean referenciado, la referencia se resuelve automáticamente.
Durante y después de la instalación de aplicación, puede especificar nombres JNDI de referencia de EJB en la página Correlacionar referencias EJB con beans. Después de la instalación, pulse en la consola administrativa.
Nota: Para habilitar la resolución automática de destinos de referencia de EJB si las referencias son del módulo EJB 2.1 o versiones anteriores, seleccione Generar enlaces predeterminados en la página Preparación de la instalación de la aplicación o seleccione Permitir que los destinos de referencia de EJB se resuelvan automáticamente en las páginas Seleccionar opciones de instalación, Correlacionar referencias de EJB con beans, o Consola de referencias de EJB. - Referencias de recursos
- Una referencia de recurso es un nombre lógico utilizado para localizar un recurso
externo para una aplicación. Las referencias de recursos se especifican durante el despliegue. En
el tiempo de ejecución, las referencias se enlazan con la ubicación física (el
nombre JNDI global) del recurso en el entorno operativo de destino. Las referencias de recursos que no utilizan un URL para el nombre JNDI están disponibles del modo siguiente:
Tabla 1. Subcontextos de referencias de recurso. Se utilizan los nombres java:comp/env de JNDI para los subcontextos de referencia de recursos. Tipo de referencia de recurso Subcontexto declarado en Origen de datos JDBC (Java DataBase Connectivity) java:comp/env/jdbc Fábrica de conexiones JMS java:comp/env/jms Fábrica de conexiones JavaMail java:comp/env/mail Fábrica de conexiones URL (Uniform Resource Locator) java:comp/env/url Opcionalmente, las aplicaciones pueden asignar nombres a referencias de recursos que son URL java: con prefijos como java:module, java:app y java:global. Los URL se correlacionan a otros espacios de nombres distintos del espacio de nombres del componente, que contiene enlaces de nombre java:comp/env. Las referencias de recursos con nombres de URL se enlazan al espacio de nombres correspondiente dependiendo del URL.
Para cada referencia de recursos, debe especificar un nombre JNDI. Si un desplegador elige generar enlaces predeterminados cuando instala la aplicación, el asistente de instalación genera enlaces de referencia de recursos derivados del distintivo <res-ref-name>, presuponiendo que el nombre java:comp/env es el mismo que el nombre JNDI global del recurso.
Durante la instalación de aplicación, puede especificar nombres JNDI de referencia de recurso en la página Correlacionar referencias de recursos con recursos. Especifique nombres JNDI para los recursos que representan los nombres lógicos definidos en las referencias de recursos. Puede especificar opcionalmente el nombre de configuración de inicio de sesión y las propiedades de autenticación para el recurso. Después de especificar las propiedades de autenticación, pulse Aceptar para guardar los valores y volver al paso de correlación. Cada referencia de recurso definida en una aplicación debe enlazarse a un recurso definido en la configuración WebSphere Application Server. Después de la instalación, pulse en la consola administrativa para acceder a la página Referencias de recurso.
- Enlaces de host virtual para módulos web
- Debe enlazar cada módulo web con un host virtual específico. El enlace informa al plug-in de servidor web de que todas
las peticiones que coincidan con el host virtual deben manejarse en la
aplicación web. Un ejemplo de host virtual enlazado con una aplicación web Store puede ser store_host. La definición de enlace se almacena
en archivos de enlace IBM como WEB-INF/ibm-web-bnd.xmi.
Si un desplegador elige generar enlaces predeterminados cuando instala la aplicación, el asistente de instalación establece el host virtual como default_host para cada archivo .war.
Durante y después de la instalación de la aplicación, puede correlacionar un host virtual con un módulo web definido en la aplicación. En la página Correlacionar host virtuales para módulos web, especifique un host virtual. El número de puerto especificado en la definición del host virtual se utiliza en el URL empleado para acceder a artefactos como servlets y archivos JSP (JavaServer Pages) del módulo web. Para los sistemas Por ejemplo, un URL externo de un artefacto web como, por ejemplo, un archivo JSP es http://nombre_host:puerto_host_virtual/raíz_contexto/vía_acceso_jsp. Después de la instalación, pulse en la consola administrativa.
- Beans controlados por mensajes
- Para cada bean controlado por mensaje, debe especificar una cola o un tema
en el que el bean escuchará. El bean controlado por mensajes se invoca mediante una escucha JMS (Java
Messaging Service) cuando llegan mensajes a la cola de entrada que supervisa la
escucha. Un desplegador especifica un puerto de escucha o un nombre
JNDI de una especificación de activación, como se ha definido
en un módulo de conector (archivo .rar) bajo
Enlaces de WebSphere en la página Beans de
un editor de descriptores de despliegue de EJB de la herramienta de ensamblaje.
Un ejemplo de
nombre JNDI de un puerto de escucha utilizado por una aplicación Store puede
ser StoreMdbListener.
La definición de enlace se almacena en archivos de
enlaces IBM como ibm-ejb-jar-bnd.xmi. Si un desplegador elige generar enlaces predeterminados cuando instala la aplicación, el asistente de instalación asigna nombres JNDI a los enlaces incompletos.
- Para los beans controlados por mensaje EJB 2.0 o de una versión posterior desplegados como recursos compatibles con JCA 1.5, el asistente de instalación asigna los nombres JNDI correspondientes a las instancias activationSpec con el formato eis/MDB_ejb-name.
- Para los beans controlados por mensajes EJB 2.0 o posterior desplegados en puertos de escucha, los puertos de escucha se derivan del distintivo <nombre-ejb> del bean controlado por mensajes con la serie Puerto añadida.
Durante la instalación de aplicación utilizando la consola administrativa, puede especificar un nombre de puerto de escucha o un nombre JNDI de especificación de activación para cada bean controlado por mensaje en la página Enlazar escuchas para beans controlados por mensaje. Debe proporcionarse un nombre de puerto de escucha cuando se utilicen los proveedores de JMS: Mensajería por omisión V5, WebSphere MQ o Genérico. Se debe proporcionar una especificación de activación cuando se configuran los recursos de aplicación mediante el proveedor de mensajería por omisión o cualquier adaptador de recursos J2C genérico que da soporte a la mensajería de entrada. Si no se especifica ninguna, se muestra un error de validación después de pulsar Finalizar en la página Resumen.
Después de la instalación de la aplicación, puede especificar nombres JNDI y configurar beans controlados por mensajes en las páginas de la consola en
o en .Restricción: Sólo puede enlazar beans controlados por mensaje definidos en un módulo EJB 3.0 o posterior con una especificación de activación. - Referencias de destinos de mensajes
- Una referencia de destino de mensaje es un nombre lógico utilizado para localizar
un enterprise bean en un módulo EJB que actúa como destino de mensaje.
Las referencias de destinos de
mensajes existen sólo en artefactos de J2EE 1.4 y posterior como, por ejemplo:
- Clientes de aplicaciones de J2EE 1.4
- Proyectos de EJB 2.1
- Aplicaciones web 2.4
Si se asocian varias referencias de destino de mensajes con un solo enlace de destino de mensajes, se recopila durante el despliegue un único nombre JNDI de un enterprise bean que se correlaciona con el enlace de destino de mensajes y, a su vez, con todas las referencias de destino de mensajes enlazadas. En el tiempo de ejecución, todas las referencias de destino de mensajes se enlazan con los destinos de mensajes administrados en el entorno operativo de destino.
Si una referencia de destino de mensaje y un bean controlado por mensajes están enlazados por el mismo destino de mensaje, la referencia y el bean deben tener el mismo nombre JNDI de destino. Si ambos tienen el mismo nombre, sólo se recopila el nombre JNDI del bean controlado por mensajes y se aplica a la referencia de destino de mensaje correspondiente.
Si un desplegador elige generar enlaces predeterminados cuando instala la aplicación, el asistente de instalación asigna nombres JNDI a referencias de destinos de mensajes incompletas de la siguiente manera: si una referencia de destinos de mensajes tiene un <message-destination-link>, el nombre JNDI se establece como ejs/message-destination-linkName. De lo contrario, el nombre JNDI se establece como eis/message-destination-refName.
Dependiendo de las referencias y de los artefactos que se utilizan en la aplicación, deberá definir enlaces para otras referencias y artefactos.
Conflictos de recursos de la aplicación
Antes de la versión 8 del producto, los recursos definidos de la aplicación como entradas de referencias y entorno se enlazaban en el espacio de nombres de componentes relativo a java:comp/env. En la versión 8.0 y posterior, un desarrollador de aplicaciones puede asignar un nombre a un recurso que sea un URL java: con el prefijo java:module, java:app o java:global. Cada uno de estos URL se resuelve en espacios de nombres diferentes, distintos del espacio de nombres del componente. Un espacio de nombres java:module se comparte entre todos los componentes de un módulo, un espacio de nombres java:app se comparte entre todos los módulos de una aplicación, y un espacio de nombres java:global se comparte entre todas las aplicaciones de una célula. Puesto que los espacios de nombres se comparten, se podría asignar el mismo nombre a recursos diferentes, situación que podría generar conflictos.
Los conflictos en el ámbito de módulo sólo se pueden producir si dos componentes del módulo definen recursos con el mismo nombre. Debido al pequeño tamaño de este ámbito, es poco probable que un módulo tengan conflictos reales. No obstante, si existen varias instancias de la misma definición de recurso, deben configurarse de la misma forma. Por ejemplo, si a dos referencias de EJB a un tipo de EJB determinado les asigna el mismo nombre java:module, deberá configurar ambas con el mismo enlace de datos. En caso contrario, los dos recursos entrarán en conflicto y la acción de configuración de la aplicación fallará.
Los recursos de ámbito de aplicación recursos son como los recursos de ámbito de módulo. La única diferencia es que las definiciones se pueden originar a partir de cualquier módulo de la aplicación. Al igual que ocurre con los recursos de ámbito de módulo, todos los recursos de ámbito de aplicación que tienen el mismo nombre deben ser el mismo tipo de recurso, y se deben configurar con el mismo enlace de datos.
Los recursos de ámbito global difieren de los recursos de ámbito de aplicación y de módulo en que se pueden generar conflictos entre las diferentes aplicaciones. Cuando se produce un conflicto, las aplicaciones que han entrado en conflicto no puede coexistir si los recursos no son los mismos lógicamente. Si varias instancias de un recurso de ámbito global identifican el mismo recurso lógicamente, deberá configurarlas todas con el mismo enlace de datos. para que el producto no las detecte como conflictivas. Para poder editar un recurso de ámbito global para el que existan apariciones para varias aplicaciones, las aplicaciones que definan algún elemento deberán editarse en la misma sesión, para que no introduzcan ningún conflicto. Si esto no se puede llevar a cabo, tendrá como resultado que se genere una anomalía cuando se guarde la sesión.