Es gibt zwei Typen von Startup-Beans: Startup-Beans für Anwendungen und Startup-Beans für Module.
Informationen zu diesem Vorgang
Veraltetes Feature: Die mit Startup-Singleton-Session-Beans (Spezifikation EJB 3.1)
bereitgestellten Funktionen bewirken, dass die proprietären Startup-Beans von WebSphere
Application Server veraltet sind.
depfeat
Eine Startup-Bean für Module ist eine Session-Bean, die beim Starten einer EJB-JAR-Datei geladen wird.
Mit Startup-Beans für Module können Java™-EE-Anwendungen (Java Platform Enterprise Edition) Geschäftslogik automatisch ausführen, wenn ein EJB-Modul normal gestartet oder gestoppt wird. Eine Startup-Bean für Anwendungen
ist eine Session-Bean, die beim Start der Anwendung
geladen wird. Mit Startup-Beans für Anwendungen können Java-EE-Anwendungen die Geschäftslogik automatisch ausführen, wenn eine Anwendung normal gestartet oder gestoppt wird.
Startup-Beans sind besonders nützlich, wenn sie zusammen mit Features für
asynchrone Beans verwendet werden. Beispielsweise könnte eine Startup-Bean ein Alarmobjekt erstellen, das JMS verwendet, um zu einem bestimmten Topic in regelmäßigen Abständen
Überwachungssignalnachrichten zu veröffentlichen.
Auf diese Weise können Clients oder andere Serveranwendungen feststellen, ob die
Anwendung verfügbar ist. Lesen Sie den Artikel "Einer Anwendung das Abwarten des Starts einer Messaging-Engine ermöglichen",
wenn Sie den JMS-Standardprovider verwenden.
- Mit der Home-Schnittstelle "com.ibm.websphere.startupservice.AppStartUpHome"
können Sie eine Bean als Startup-Bean für Anwendungen festlegen.
Mit der Home-Schnittstelle "com.ibm.websphere.startupservice.ModStartUpHome" können Sie eine Bean als Startup-Bean
für Module festlegen.
- Verwenden Sie für Startup-Beans für Anwendungen die ferne Schnittstelle "com.ibm.websphere.startupservice.AppStartUp",
um die Methoden "start()" und "stop()" in der Bean zu definieren. Verwenden Sie für Startup-Beans für Module
die ferne Schnittstelle "com.ibm.websphere.startupservice.ModStartUp",
um die Methoden "start()" und "stop()" in der Bean zu definieren.
Die Methode "start()" der
Startup-Bean wird beim Starten des Moduls bzw. der Anwendung aufgerufen und enthält Geschäftslogik,
die beim Starten des Moduls bzw.
der Anwendung ausgeführt werden muss.
Die Methode start() gibt einen booleschen Wert zurück. True zeigt an, dass die Geschäftslogik
innerhalb der Methode start() erfolgreich ausgeführt wurde.
Umgekehrt zeigt der Wert false an, dass
die Geschäftslogik in der Methode start() nicht ausgeführt werden konnte.
Außerdem zeigt der Rückgabewert
False an, dass der Anwendungsstart des Anwendungsservers abgebrochen wurde.
Die Methoden "stop()" der
Startup-Bean werden beim Stoppen des Moduls bzw. der Anwendung aufgerufen und enthalten Geschäftslogik,
die beim Stoppen des Moduls bzw.
der Anwendung ausgeführt werden muss.
Eine von einer Methode "stop()" ausgelöste Ausnahme wird nur protokolliert.
Es werden keine weiteren Aktionen ausgeführt.
Die Methoden
"start()" und "stop()" dürfen das Transaktionsattribut TX_MANDATORY nicht verwenden.
Es ist keine globale Transaktion im Thread vorhanden, wenn die Methoden "start()" oder "stop()"
aufgerufen werden. Alle anderen Attribute des Typs "TX_*" können verwendet werden. Bei Verwendung
von TX_MANDATORY wird eine Ausnahme protokolliert, und der Anwendungsstart wird abgebrochen.
Die Methoden
"start()" und "stop()" auf die ferne Schnittstelle verwenden den Modus
Run-As. Der Modus Run-As
legt die Berechtigungsinformationen fest, die vom Sicherheitsservice verwendet werden,
um die Berechtigungen zu ermitteln, die einen Principal für verschiedene Ressourcen besitzt. Ist die
Sicherheitsfunktion aktiviert, muss der RunAs-Modus für alle aufgerufenen Methoden
definiert werden.
Ohne diese Einstellung ist die Identität der Bean undefiniert.
Hinsichtlich des Codes, den die Methoden
"start()" und "stop()" ausführen können, bestehen keinerlei Einschränkungen,
weil für diese Methoden das vollständige Application-Server-Programmiermodell
verfügbar ist.
- Verwenden Sie die optionale Umgebungseigenschaft
wasStartupPriority, die eine ganze Zahl angibt und damit
die Startreihenfolge mehrerer
Startup-Beans in derselben JAR-Datei festlegt. Wird die Umgebungseigenschaft gefunden und verwendet es einen falschen Typ, dann wird der Anwendungsstart
abgebrochen. Wird kein Prioritätswert angegeben, wird die Standardpriorität 0 verwendet. Es wird empfohlen,
die Prioritätseigenschaft festzulegen. Die Reihenfolge der Beans, für die eine Priorität definiert wurde, wird
anhand dieser Eigenschaft festgelegt.
Beans mit einem niedrigen Prioritätswert werden als Erstes
ausgeführt. Beans mit demselben Prioritätswert werden in nicht definierter Reihenfolge ausgeführt. Alle Prioritäten
müssen positive ganze Zahlen sein.
Beans werden in der umgekehrten Reihenfolge ihrer Startpriorität gestoppt. Die Prioritätswerte für die Startup-Beans für Module und die Startup-Beans für Anwendungen schließen sich gegenseitig aus.
Alle Module werden gestartet, bevor die Anwendung als "gestartet" deklariert wird. Deshalb
werden die Methoden start() für die Startup-Beans für Module in einer Anwendung vor den Methoden
start() der Startup-Beans für die Anwendung aufgerufen.
In ähnlicher Weise werden die
Methoden stop() der Startup-Bean der Anwendung werden für eine bestimmte JAR-Datei (Java Archive) vor den Methoden
stop() der Startup-Beans der Module für diese JAR-Datei aufgerufen.
Anmerkung: Der ganzzahlige Wert der Umgebungseigenschaft
wasStartupPriority
kann entweder mit einem Befehl oder in der Administrationskonsole festgelegt werden.
Diese Umgebungseigenschaft ist ein EJB-Umgebungseintrag, der vom Anwendungsentwickler, nicht vom Administrator festgelegt wird.
Der ganzzahlige Wert wird wie im folgenden Beispiel gezeigt
in der Datei
ejb-jar.xml festgelegt:
<env-entry>
<env-entry-name>wasStartupPriority</env-entry-name>
<env-entry-type>java.lang.Integer</env-entry-type>
<env-entry-value>3</env-entry-value>
</env-entry>
Wie für jeden anderen
EJB-Umgebungseintrag muss für jede EJB ein separater Wert für
wasStartupPriority angegeben werden.
- Für Startup-Beans für Module kann die Reihenfolge, in der die EJB-Module gestartet werden, mit dem Wert von
Anfangswertigkeit jedes Moduls angepasst werden.
- Gehen Sie wie folgt vor, um zu steuern, wer Methoden der Startup-Beans über die WebSphere-Sicherheit aufrufen kann:
- Definieren Sie die Methodenberechtigungen für die Methoden "start()" und "stop()"
wie bei jedem anderen EJB-Modul. (Informationen finden Sie im Artikel "Methodenberechtigungen für EJB-Module definieren.")
- Vergewissern Sie sich, dass der Benutzer, der der für die Methoden der Startup-Beans
definierten Sicherheitsrolle zugeordnet ist, derselbe Benutzer ist, der als
"Serverbenutzer-ID" in der Benutzerregistry definiert ist.