2010-04-25 9 views

Antwort

21

Ab EJB 3.1 können Singleton Bohnen Modul Start benachrichtigt und stoppen:

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

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

Vor der EJB 3.1, gibt es keinen Standard, EJB-only Lösung. Ich würde vorschlagen, eine WAR-Datei zu Ihrer EAR hinzuzufügen und einen Servlet-Context-Listener zu verwenden.

+0

Ich habe festgestellt, dass meine App in GlassFish 3.1, der @Singleton @Startup EJB einen @PersistenceContext EntityManager hat, der geschlossen ist. Meine Abhilfe bestand darin, einen Timer in diesem EJB zu haben, der 2 Sekunden später ausgeführt wird. (duh!) –

+3

Das klingt nach einem Fehler für mich; Ich würde empfehlen, es zu melden. –

17

Nach Adam Bien Real World Java EE Patterns - Rethinking Best Practices (eine summary of the patterns sehen) und die Service-Starter Muster, es ist in der Tat als bkail

  • mit Java EE 6 = Verwendung @Singleton EJB 3.1 schlägt vor, mit @Startup (und vielleicht auch mit @DependsOn)
  • davor ist der einzige standardmäßige und portable Weg, die Servlet-API zu verwenden, z ein HttpServlet startet die EJBs in seiner init() -Methode und load-on-startup wird in web.xml auf 1 gesetzt.
Verwandte Themen