Pautas de integración Seam - EJB3

LIBP-0051 (Libro de pautas)

Seam facilita la integración y el entendimiento entre JSF y EJB3, pero aún así se deben seguir unas recomendaciones para afinar su integración con EJB3.

Seam es un framework que tiene como objetivo facilitar la integración entre las especificaciones de Java EE5.

Pautas

TítuloCarácter
Configuración del interceptor EJB para SeamObligatoria
Definición de los componentes Seam para utilizarse dentro del contenedor de EJBObligatoria

Configuración del interceptor EJB para Seam

Si se van a usar componentes EJB es necesario instalar el interceptor de EJB de Seam dentro del descriptor de desarrollo de EJB, modificando el fichero ejb-jar.xml:

<ejb-jar>
   . . .
   <assembly-descriptor>
      <interceptors>
        <interceptor>
          <interceptor-class>
             org.jboss.seam.ejb.SeamInterceptor
          </interceptor-class>
        </interceptor>
      </interceptors>
      <interceptor-binding>
         <ejb-name>*</ejb-name>
        <interceptor-class>
           org.jboss.seam.ejb.SeamInterceptor
        </interceptor-class>
      </interceptor-binding>
    </assembly-descriptor>
  . . .
</ejb-jar>

Esta entrada provocará que Seam intercepte todos los componentes EJB que se desarrollen como parte de la aplicación. El interceptor permitirá que todos los componentes EJB sean usados como componentes Seam, insertándolos en el ciclo de vida de un componente Seam cuando anote su EJB con la anotación @Name de Seam.

Definición de los componentes Seam para utilizarse dentro del contenedor de EJB

Es posible desarrollar aplicaciones Seam con un pequeño o directamente sin un fichero components.xml. Este no debería de ser el caso base pues cualquier servicio Seam que use, normalmente requerirá alguna configuración de datos para funcionar correctamente. Si usa componentes EJB3 como componentes Seam, no necesita esta configuración. Pero en el caso el caso que ordene a Seam interactuar con el contenedor EJB3, necesita introducir una entrada con el código de la inicialización del componente Seam y esta entrada tendrá que incluir una configuración para el patrón JDNI que Seam utilizará para encontrar los componentes EJB de la aplicación dentro de los servicios JNDI del servidor de aplicaciones. Un ejemplo sería el siguiente:

<components>
   <component name="org.jboss.seam.core.init">
      <property name="jndiPattern">myApplication/#{ejbName}/local</property>
    </component>
</components>