A session bean must define at least one ejbCreate method

Descripción

Al deployar un JAR que contiene EJB’s en JBoss, server.log registra un error como el siguiente:

[verifier] EJB spec violation: 
Bean   : SFFormularios
Section: 7.10.3
Warning: A Session bean must define at least one ejbCreate method.
17:40:15,156 WARN  [EJBDeployer] Verify failed; continuing

Esto ocurre aún cuando el proyecto compila sin problemas en Eclipse u otro IDE.

Además, esto coincide con una serie de errores de clases no encontradas, a pesar de que los JAR (no necesariamente el del EJB) están deployados.

Causa

Como dice el error, esto ocurre por una violación de la especificación J2EE. En la sección 7.10.3 dice que todo Session Bean debe tener un método ejbCreate(), tal como dice en el log.

Curiosamente este requerimiento de tener este método no está forzado por una interfaz, lo que produce que el proyecto compile sin problemas aún no teniendo este método.

Solución

En principio, basta con agregar el método en la clase del Bean (la que contiene nuestra lógica del EJB, normalmente terminada en “Bean”), como en el ejemplo siguiente:

public class WorkflowBean implements SessionBean {

       private SessionContext context;
 
       private WorkflowWrapper wf; 
	
       public WorkflowBean() {
           super();
       }

       //Este es el metodo a agregar
       public void ejbCreate()
       {
	
       }

       public void ejbActivate() throws EJBException, RemoteException {
       }...