Proyectos Enterprise JavaBean (de EJB 2.0 a EJB 2.1)

El asistente de migración J2EE permite migrar los descriptores de despliegue de beans de empresa de los recursos EJB del nivel de especificación J2EE 1.3 al nivel de especificación J2EE 1.4. Los beans de sesión sin estado y los beans controlados por mensajes migran a J2EE 1.4.

Migrar beans de sesión

Con el asistente de migración J2EE, los beans de sesión sin estado que estén definidos como interfaces de punto final de servicio (SEI) en el descriptor webservices.xml de un proyecto EJB en J2EE 1.3 se pueden migrar al nivel de especificación J2EE 1.4, estableciéndose para ello nuevas interfaces de punto final de servicio en los beans de sesión sin estado.

La especificación J2EE 1.4 exige que se defina una SEI en un bean de sesión sin estado que deba utilizarse como punto final de servicios Web. Durante la migración de un archivo JAR EJB, todos los beans de sesión del proyecto EJB obtienen el nuevo punto final de servicio establecido en el nombre que se utiliza en el descriptor webservices.xml del proyecto EJB. En el siguiente ejemplo, se ve cómo son los metadatos de un proyecto EJB antes y después de migrarlo al nivel de especificación J2EE 1.4.

Proyecto EJB de J2EE 1.3: descriptor webservices.xml con un bean de sesión sin estado que se utiliza como punto final de servicios Web antes de la migración

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE webservices PUBLIC "-//IBM Corporation, Inc.//DTD J2EE Web services 1.0//EN" 
"http://www.ibm.com/webservices/dtd/j2ee_web_services_1_0.dtd">
   <webservices id="WebServices_1084831328093">
      <webservice-description id="WebServiceDescription_1084831328093">
         <webservice-description-name>EchoEJBService</webservice-description-name>
         <wsdl-file>META-INF/wsdl/EchoEJB.wsdl</wsdl-file>
         <jaxrpc-mapping-file>META-INF/EchoEJB_mapping.xml</jaxrpc-mapping-file>
         <port-component id="PortComponent_1084831328103">
            <port-component-name>EchoEJB</port-component-name>
            <wsdl-port id="WSDLPort_1084831328103">
               <namespaceURI>http://test</namespaceURI>
               <localpart>EchoEJB</localpart>
            </wsdl-port>
            <service-endpoint-interface>test.EchoEJB</service-endpoint-interface>
            <service-impl-bean id="ServiceImplBean_1084831328103">
               <ejb-link>EchoEJB</ejb-link>
            </service-impl-bean>
         </port-component>
      </webservice-description>
   </webservices>
Los códigos <service-endpoint-interface> y <service-impl-bean> del ejemplo anterior definen el bean de sesión sin estado "EchoEJB" como punto final de servicio en el descriptor de servicios Web (webservices) en el nivel de especificación J2EE 1.3 antes de la migración.

Proyecto EJB de J2EE 1.4: descriptor de despliegue EJB del mismo bean de sesión sin estado "EchoEJB" con la interfaz de punto final de servicio (SEI) creada por el proceso de migración

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar>
<ejb-jar id="ejb-jar_ID" version="2.1" xmlns="http://java.sun.com/xml/ns/j2ee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd">
	<display-name>
	EchoEJBProject</display-name>
	<enterprise-beans>
		<session id="EchoEJB">
			<ejb-name>EchoEJB</ejb-name>
			<home>test.EchoEJBHome</home>
			<remote>test.EchoEJB</remote>
			<service-endpoint>test.EchoEJB</service-endpoint>
			<ejb-class>test.EchoEJBBean</ejb-class>
			<session-type>Stateless</session-type>
			<transaction-type>Container</transaction-type>
		</session>
	</enterprise-beans>
</ejb-jar>
El código <service-endpoint> del ejemplo anterior define el bean "EchoEJB" como punto final de servicio en el nivel de especificación J2EE 1.4 después de la migración.

Migrar beans controlados por mensajes

El asistente de migración J2EE permite migrar los beans controlados por mensajes de EJB 2.0 a los beans controlados por mensajes de tipo servicio de mensajería Java (JMS) de EJB 2.1.

Los beans controlados por mensajes se introdujeron en EJB 2.0 para dar soporte al proceso de mensajes asíncronos procedentes de un servicio de mensajería Java (JMS). La especificación EJB 2.1 amplía la definición del bean controlado por mensajes para que pueda admitir cualquier sistema de mensajería, no tan solo el sistema JMS.

Los artefactos migrados de los beans controlados por mensajes de EJB 2.0 son:
  • acknowledgeMode
  • messageSelector
  • destinationType
  • subscriptionDurablity
Algunos de los elementos de los beans controlados por mensajes de EJB 2.0 se sustituyen por propiedades del elemento activation-config. Los nombres y valores que se utilizan en la propiedad activation-config para describir el servicio de mensajería varía en función del tipo de servicio de mensajería que se utilice. Sin embargo, la especificación EJB 2.1 define un conjunto de propiedades fijas para los beans controlados por mensajes basados en JMS.

En el siguiente ejemplo, se establece una comparación entre los elementos de un bean de ejemplo de EJB 2.0 y los elementos tal como serían en EJB 2.1.

Ejemplo de los elementos de un bean controlado por mensajes en EJB 2.0:

<message-driven id="Mdb20">
	  <ejb-name>Mdb</ejb-name>
	  <ejb-class>ejbs.MdbBean</ejb-class>
	  <transaction-type>Bean</transaction-type>
	  <message-selector>mdbMessage</message-selector>
	  <acknowledge-mode>Auto-acknowledge</acknowledge-mode>
	  <message-driven-destination>
		<destination-type>javax.jms.Topic</destination-type>
		<subscription-durability>Durable</subscription-durability>
	   </message-driven-destination>
</message-driven>

Ejemplo de los elementos de un bean controlado por mensajes en EJB 2.1:

    <message-driven id="Mdb21">
  <ejb-name>Foo/ejb-name>
  <ejb-class>ejbs.FooBean</ejb-class>
   <messaging-type>javax.jms.MessageListener</messaging-type>
   <transaction-type>Bean/transaction-type>
   <message-destination-type>javax.jms.Topic</message-destination-type>
    <activation-config>
	  <activation-config-property>
	   <activation-config-property-name>destinationType</activation-config-property-name>
	   <activation-config-property-value>javax.jms.Topic</activation-config-property-value>
	  </activation-config-property>
	  <activation-config-property>
	   <activation-config-property-name>subscriptionDurability</activation-config-property-name>
	     <activation-config-property-value>Durable</activation-config-property-value>
	  </activation-config-property>
	  <activation-config-property>
	     <activation-config-property-name>acknowledgeMode</activation-config-property-name>
	     <activation-config-property-value>AutoAcknowledge</activation-config-property-value>
	  </activation-config-property>
	  <activation-config-property>
		<activation-config-property-name>messageSelector</activation-config-property-name>
		<activation-config-property-value>fooSelector</activation-config-property-value>
	  </activation-config-property>
</activation-config>
</message-driven>

Tema principal: Migración del nivel de especificación J2EE 1.3 al nivel de especificación J2EE 1.4

Referencia relacionada
Proyectos Web (del nivel Servlet 2.3 al nivel Servlet 2.4)
Proyectos de conector (de JCA 1.0 a JCA 1.5)
Servicios Web (de J2EE 1.3 a J2EE 1.4)
Migración del nivel de especificación J2EE 1.3 al nivel de especificación J2EE 1.4

Condiciones de uso | Comentarios
(C) Copyright IBM Corporation 2000, 2005. Reservados todos los derechos.