Rilevamento del cluster master

Problema

Come rilevare se il codice è in esecuzione sul nodo master in un cluster (se il clustering è abilitato).

Soluzione

Utilizza il descrittore del repository "crx.cluster master. Ma nota che il valore potrebbe essere nullo se il clustering è disabilitato su alcune versioni di CRX. Usa il seguente codice (funziona in qualsiasi applicazione basata su CRX utilizzando CRX2.1.0.10+.)

package sample.demo;
public interface ClusterService {
public boolean isMaster();
}
package sample.demo;

import sample.demo.ClusterService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Deactivate;
import org.apache.felix.scr.annotations.Service;
import org.apache.felix.scr.annotations.Reference;
import javax.jcr.Repository;

@Component(metatype = false)
@Service(value = ClusterService.class)

public class MyClusterAwareService implements ClusterService {
    private static final Logger LOGGER = LoggerFactory.getLogger(MyClusterAwareService.class);

    @Reference
    private Repository repository;
    
    public boolean isMaster() {
       String v = repository.getDescriptor("crx.cluster.master");
        boolean isOnMaster = v == null || Boolean.parseBoolean(v);
        LOGGER.info("MyClusterAwareService isMaster" + isOnMaster );
        return isOnMaster;
    }
    
    @Activate
    protected void activate() {
        LOGGER.info("service activated" );
    }
    @Deactivate
    protected void deactivate() {
        LOGGER.info ("service deactivated");
    }
}
<%
sample.demo.ClusterService clusterService =  sling.getService(sample.demo.ClusterService.class);
%>
Am I master <%= clusterService.isMaster() %>
Nota:

Nota: In CQ5 ci sono alcune librerie che aiutano ad implementare servizi OSGi consapevoli dei cluster.Vedi qui.

** CRX 2.1 deve avere hot fix 2.1.0.10 applicato

Nota:

AEM 5.6.1 (CRX 2.4.30) utilizza la nuova topologia API. Dettagli su http://helpx.adobe.com/it/cq/kb/create-cluster-aware-osgi-service.html

 Adobe

Ottieni supporto in modo più facile e veloce

Nuovo utente?