Anwendungen mit einer Abhängigkeit von der Verfügbarkeit der Messaging-Engine

Wenn eine Anwendung davon abhängig ist, dass eine Messaging-Engine verfügbar ist, muss die Messaging-Engine gestartet sein, damit die Anwendung ausgeführt werden kann.

Wenn der Anwendungsserver eine Anwendung automatisch starten soll, müssen Sie Ihre Anwendungen so entwickeln, dass sie prüfen, ob die erforderliche Messaging-Engine gestartet ist, und gegebenenfalls auf die Messaging-Engine warten. Wird diese Technik in einer Startup-Bean verwendet, muss die Methode der Startup-Bean diese Arbeit (testen und warten) in einem separaten Thread unter Verwendung von WorkManager-Standardmethoden ausführen, damit der Start des Anwendungsservers nicht verzögert wird.

Der folgende Codeauszug zeigt, wie geprüft wird, ob eine Messaging-Engine gestartet ist und wie gegebenenfalls auf die Messaging-Engine gewartet wird:
import java.util.Iterator;
import javax.management.ObjectName;
import com.ibm.websphere.management.AdminService;
import com.ibm.websphere.management.AdminServiceFactory;

    String messagingEngineName = "messagingEngineName"; 
    // Prüfen, ob Messaging-Engine gestartet ist, z. B. "node01.server1-bus1"
    boolean meStarted = false;
                                                                        
    AdminService adminService = AdminServiceFactory.getAdminService();
    while (!meStarted) {
      String filterString = "WebSphere:type=SIBMessagingEngine,name=" + 
                             messagingEngineName + ",*";                  
      boolean foundBean = false;
      ObjectName objectName = null;
      try {
        ObjectName objectNameFilter = new ObjectName(filterString);
        Iterator iter = adminService.queryNames(objectNameFilter,null).iterator();
        while (iter.hasNext()) {
            objectName = (ObjectName) iter.next();
            foundBean = true;
            break;
        }                                                               
      } catch (Exception e)  {
        e.printStackTrace();
      }                                                                   
      if (foundBean) {
        // MBean der Messaging-Engine wurde gefunden,
        // d. h., die Messaging-Engine ist gestartet.
        // Jetzt prüfen, ob sie auch wirklich im Status "Gestartet" ist.
        meStarted = 
          ((Boolean) adminService.invoke(objectName, "isStarted", null, null)).booleanValue();                               
      }                                                                   
                                                                        
      if (!meStarted) {
        // Falls die Messaging-Engine noch nicht gestartet ist, ein bisschen warten...
        Thread.sleep(5000);
      }                                                                   
    }

Symbol, das den Typ des Artikels anzeigt. Konzeptartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cjb0003_
Dateiname:cjb0003_.html