Frage

Ich habe ein Webprojekt unter Java EE 5 und Websphere 7.0 Ich muss einen Scheduler erstellen und ihn nach der Bereitstellung der Anwendung starten. Was ich versucht habe: Ich erstelle EJB mit Schnittstelle:

@Local
public interface ISchedulerBean {

    public void executeTimer(Timer timer);
    public void createTimer();
}

zustandslose Session Bean implementiert diese Schnittstelle. Die Methode createTimer erstellt eine Timer-Instanz aus TimerService. Dieser Teil des Codes funktioniert einwandfrei. Außerdem muss ich nach der Anwendungsbereitstellung die Methode createTimer () aufrufen. Ich habe versucht:

  1. Listener-ServletContext hinzufügen:

    öffentliche Klasse SchedulerInitialiserContextListener implementiert ServletContextListener { // Service zum Nachschlagen ejb privater WebServiceLocator webServiceLocator; private SchedulerService schedulerService;

    public SchedulerInitialiserContextListener () { webServiceLocator= neuer WebServiceLocator (); schedulerService= webServiceLocator.getSchedulerService (); }

    public void contextDestroyed(ServletContextEvent ctx) {
    }
    
    public void contextInitialized(ServletContextEvent ctx) {
        schedulerService.createTimer();
    }
    

    Series

  2. Servlet mit 1 erstellen, wobei SchedulerBean in die Methode init () injiziert und createTimer aufgerufen wird.

    Dies funktioniert jedoch nicht, da Webspere zunächst eine Webanwendung bereitstellt, Listener aufruft, Servlets initialisiert und erst dann ejb.jar bereitstellt, in dem sich alle ejb befinden. Ich kann das in der Webshpere-Protokolldatei sehen. Wenn ich also versuche, eine EJB-Wurf-@JB-Annotation oder -Nachfrage zu erhalten, erhalte ich eine Ausnahme, da EJB nicht gefunden wurde. Möglicherweise ist es ein anderer Ansatz, den Timer nach der Bereitstellung des EJB-Moduls zu starten oder die Bereitstellungsreihenfolge zu ändern?

War es hilfreich?

Lösung

Sie können die Startreihenfolge Ihrer Module festlegen.

Angenommen, Sie entwickeln mit Rational Application Developer, gehen Sie wie folgt vor:

Klicken Sie mit der rechten Maustaste auf Ihr Ohrprojekt und klicken Sie auf Java EE -> Öffnen Sie die WebSphere Application Server-Bereitstellung.

Suchen Sie im Abschnitt Anwendung nach allen Modulen, und Sie können den Start weight für jedes Modul festlegen.

Stellen Sie sicher, dass Ihr Webprojekt, das den Kontext-Listener enthält, den größten Wert hat und dass es Ihnen gut gehen sollte.

  • Dieser Vorgang erstellt ein ibmconfig-Verzeichnis unter META-INF Ihres Ohrprojekts. Stellen Sie sicher, dass Sie es in Ihrem Erstellungsprozess verpacken
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top