2011-07-25 12 views
6

he creado un proyecto de aplicación Java Web en NetBeans, y creó un bean de arranque en él:bean de arranque no se llama

package malibu.util; 

import javax.annotation.PostConstruct; 
import javax.ejb.EJB; 
import javax.ejb.Stateless; 
import javax.ejb.LocalBean; 

@Stateless 
@LocalBean 
@javax.ejb.Startup 
public class Startup { 
    @EJB 
    private ProviderEJB providerEJB; 

    @PostConstruct 
    public void onStartup() { 
     System.err.println("Initialization success."); 
    } 
} 

Sin embargo, el código no se llama después de implementar la aplicación. ¿Qué puede causar esto?

Respuesta

11

Prueba el siguiente conjunto de anotaciones:

@Singleton 
@Startup 
public class Startup { 
    @EJB 
    private ProviderEJB providerEJB; 

    @PostConstruct 
    public void onStartup() { 
     System.err.println("Initialization success."); 
    } 
} 

podrás encontrar más detalles here y en this book (capítulo 2).

6

La anotación de inicio es para uso con beans Singleton, no con beans sin estado. Vea el javadoc.

Además, @LocalBean no es necesario en este caso. Esto declara que desea una vista adicional sin interfaz, pero esto solo es necesario si el bean implementa una interfaz comercial remota o local. Si lo omites, obtienes una vista sin interfaz por defecto.