2010-04-25 11 views

Répondre

21

Au EJB 3.1, les haricots singleton peuvent être informés de démarrage du module et d'arrêt:

@Singleton 
@Startup 
public class StartupBean { 
    @PostConstruct 
    private void postConstruct() { /* ... */ } 

    @PreDestroy 
    private void preDestroy() { /* ... */ } 
} 

Avant EJB 3.1, il n'y a pas standard, solution EJB seule. Je suggère d'ajouter un fichier WAR à votre fichier EAR et d'utiliser un écouteur de contexte de servlet.

+0

J'ai trouvé que mon application dans GlassFish 3.1, le @Singleton @Startup EJB a un EntityManager @PersistenceContext qui est fermé. Ma solution de contournement était d'avoir une minuterie dans cet EJB qui s'exécute 2 secondes plus tard. (duh!) –

+3

Cela ressemble à un bug pour moi; Je recommanderais de le signaler. –

17

Selon Adam Bien Real World Java EE Patterns - Repenser les meilleures pratiques (voir un summary of the patterns) et le modèle de démarrage de service, il est en effet que bkail suggère

  • avec Java EE 6 = EJB 3.1 Utilisation @Singleton avec @Startup (et peut-être aussi avec @DependsOn)
  • avant cela, la seule façon standard et portable est d'utiliser l'API Servlet, par exemple un HttpServlet démarrant les EJB dans sa méthode init() et load-on-startup mis à 1 dans web.xml.
Questions connexes