Problem

Wie erstelle ich einen OSGi-Dienst, der berücksichtigt, ob er auf einem CQ5-/CRX-Gruppen-Sklavenknoten oder einem Master-Knoten läuft?

Lösung

In CQ5 können Sie die ClusterAware-Schnittstelle verwenden, die regelmäßig automatisch den Deskriptor für Sie überprüft.  Dadurch ist es einfacher, wenn der Knoten als Master ausgewählt ist:

import com.day.cq.jcrclustersupport.ClusterAware;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@Component(metatype = false, policy = ConfigurationPolicy.IGNORE)
@Service(ClusterAware.class)
public class MyClusterAwareService implements ClusterAware {
  public void unbindRepository() {
    log.info("No Repository is bound or Repository is unbound");
  }

  public void bindRepository(String repositoryId, String clusterId, boolean isMaster) {
    log.info("Bound to Repository {} Node {} (Cluster: {})",
      new Object[] { (isMaster ? "Master" : "Slave"), repositoryId, clusterId });
    doSomethiing(isMaster);
  }

private void doSomething(boolean isMaster) {
    //TODO: your code here
  }
}

Hinweis: Die ClusterAware-Funktion ist nur bei CQ5.3 mit installiertem Feature Pack 34071, CQ5.4 und höher verfügbar.

Gilt für

CQ 5.3

CQ 5.4

CRX 2.1

CRX 2.2

** Wenn Sie dieses in CQ5.3 verwenden möchten, benötigen Sie das 5.3 Feature Pack 34071 und CRX hotfix 2.1.0.10+.  Wenn Sie keine dieser Hotfixes haben, können Sie sie über Daycare anfordern.

Hinweis:

Ab AEM 5.6.1 wird eine neue Typologie-api verwendet. Details unter http://helpx.adobe.com/cq/kb/create-cluster-aware-osgi-service.html

Dieses Werk unterliegt den Bedingungen der Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.  Twitter™- und Facebook-Beiträge fallen nicht unter die Bedingungen der Creative Commons-Lizenz.

Rechtliche Hinweise   |   Online-Datenschutzrichtlinie