Aplicaciones con una dependencia en la disponibilidad del motor de mensajería

Si una aplicación depende de que el motor de mensajería esté disponible, el motor de mensajería debe iniciarse antes de que se pueda ejecutar la aplicación.

Si desea que el servidor de aplicaciones inicie una aplicación automáticamente, deberá desarrollar su aplicación de modo que compruebe si se ha iniciado cualquier motor de mensajería necesario y, si es necesario, que espere a que el motor de mensajería se inicie. Si ésta es la técnica utilizada en un bean de arranque, el método del bean de arranque realiza el trabajo (comprobar y esperar) en una hebra independiente, y utiliza los métodos WorkManager estándar, para que así no se retrase el arranque del servidor de aplicaciones.

Si desea ver un ejemplo de código para comprobar y esperar un motor de mensajería, consulte el siguiente extracto de código:
import java.util.Iterator;
import javax.management.ObjectName;                                     
import com.ibm.websphere.management.AdminService;                       
import com.ibm.websphere.management.AdminServiceFactory;      

    String messagingEngineName = "messagingEngineName"; 
    // Messaging engine to check if started? for example "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) {                                                    
        // You have found messaging engine MBean, which means it is initialized, 
        // now check if it is in Started state?         meStarted = 
          ((Boolean) adminService.invoke(objectName, "isStarted", null, null)).booleanValue();                               
      }                                                                   
                                                                        
      if (!meStarted) {                                                   
        // messaging engine is not started yet so sleep (wait) for a bit...     
        Thread.sleep(5000);                                             
      }                                                                   
    }

Icon that indicates the type of topic Concept topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cjb0003_
File name: cjb0003_.html