Utilisez la réplication inverse

Comment puis-je utiliser la réplication inverse et qu'est-ce qui est nécessaire pour m'assurer qu'elle fonctionne ?

Out-of-the box, CQ seulement : Page les nœuds en réplication inverse. Pour tout autre nœud, il est nécessaire d’utiliser les deux dernières méthodes en tant que mise en œuvre spécifique au projet.

Il existe trois possibilités

  • Utilisez la propriété SlingPostServlet (c’est-à-dire, ne créez pas de serveurs ou de POST.jsp personnalisés pour gérer les requêtes entrantes) afin de déclencher implicitement un événement PageEvent associé. Définissez ensuite un nom de propriété "cq:distribute" et définissez sa valeur "true" pour les nœuds sur lesquels vous souhaitez réaliser une réplication inverse.
    • Pour mettre en œuvre cette solution, il est inutile d’écrire du code. Vous pouvez utiliser le composant Form pour définir tous les champs masqués nécessaires.
  • Utilisez votre propre code accédant au référentiel, modifiez les propriétés « cq:lastModified »,« cq:lastModifiedBy » et « cq:distribute ».
    • Les données chargées peuvent être contrôlées, le code interne écrit les données.
    • Pour mettre en œuvre cette solution, vous devez écrire le code correspondant à votre projet.
  • Utilisez votre propre code qui appelle la méthode réplication du service Replicator avec les options d’utilisation du mode de distribution.
    • La réplication est contrôlée par votre code.
    • Pour implémenter cette solution, écrivez le code spécifique à votre projet.

Utilisez votre propre code pour mettre en œuvre une solution de réplication inverse.

  • Ajoutez le code suivant pour déclencher l’événement lié à la page que vous souhaitez répliquer (l’exemple ci-dessous a été extrait de l’exemple PostDataServlet.java) :
... // set the page to hide in the navigation Node pageContainer = newCommentPage.getContentResource().adaptTo(Node.class); pageContainer.setProperty("cq:lastModified", Calendar.getInstance()); pageContainer.setProperty("cq:lastModifiedBy", session.getUserID()); pageContainer.setProperty("cq:distribute", true); ... session.save(); ...

 

Ci-joint un exemple utilisant un élément pour rendre le formulaire et afficher la publication précédente. Pour chaque publication, il crée une page secondaire contenant un paragraphe avec du texte. Ainsi, chaque publication peut être gérée séparément (et les collisions avec les publications susceptibles d'être générées à partir d'autres instances de publication sont évitées). L'emplacement de stockage est défini en tant que paramètre dans la boîte de dialogue (c'est -à-dire /content/usergenerated/comments/form1, que vous pouvez créer à l'aide d'un fichier en tant qu'administrateur du site).

Dans l’instance d’auteur, vous pouvez définir un modèle de flux de travail qui sera lancé à chaque fois qu’une page sera créée sous la page des commentaires.

Assurez-vous de supprimer la valeur de distribution CQ dans votre flux, dans le cas où vous réactivez le contenu sur l'auteur à la publication. Sinon, cela créera une boucle sans fin !

Dans l’instance de publication, assurez-vous que l’utilisateur dispose de droits suffisants pour créer du contenu. Si vous testez avec un compte anonyme, modifiez les droits en conséquence à l’aide de l’Explorateur CRX pour le chemin d’accès jcr indiqué.

Remarque sur la réplication

Pour que la réplication fonctionne correctement, stockez les données en suivant les règles suivantes
(1) le type de nœud du nœud répliqué (source) doit étendre le nt:hierarchyNode
(2) tous les nœuds enfants directs qui ne sont pas nt:hierarchyNode doivent être regroupés
(3) les sous-arbres de tous les nœuds de (2), indépendamment des types de nœuds, doivent être regroupés

Adobe recommande d’utiliser le fichier cq:Page (/jcr:content) comme conteneur pour vos données, car vous pouvez le gérer facilement et l’utiliser avec l’interface d'utilisateur (siteadmin, etc.). Vous pouvez utiliser l’API PageManager pour créer la page.

Journaux sur la publication affichant la réplication inverse sortante

07.04.2010 11:58:04.398 *INFO* [ReplicateOnModification Processor] class com.day.cq.replication.impl.queue.Queue.outbox Replication request queued for outbox at /content/usergenerated/comments/form1/c1270634282059-715. 07.04.2010 11:58:04.474 *INFO* [ReplicateOnModification Processor] com.day.cq.replication.impl.ReplicatorImpl Processed replication: setup 1ms, pre 275ms, build 41ms, queued 1ms, status 76ms, total 394ms 07.04.2010 11:58:04.474 *INFO* [ReplicateOnModification Processor] com.day.cq.wcm.core.impl.event.ReplicateOnModification Auto-Replicated ACTIVATE of /content/usergenerated/comments/form1/c1270634282059-715

Journaux sur l'auteur affichant la réplication inverse entrante

07.04.2010 12:09:22.360 *INFO* [Reverse Replication Processor] com.day.cq.replication.Agent.publish_reverse Sending GET request to http://localhost:4503/bin/receive?sling:authRequestLogin=1 07.04.2010 12:09:22.384 *INFO* [Reverse Replication Processor] com.day.cq.replication.impl.AgentManagerImpl Created new repository content at /var/replication/data/publish_reverse/eed89cd3-a832-4833-bec7-7fa4e474c359 07.04.2010 12:09:22.385 *INFO* [Reverse Replication Processor] com.day.cq.replication.Agent.publish_reverse sent. Resonse: 200 OK 07.04.2010 12:09:22.385 *INFO* [Reverse Replication Processor] com.day.cq.replication.Agent.publish_reverse ------------------------------------------------ 07.04.2010 12:09:22.385 *INFO* [Reverse Replication Processor] com.day.cq.replication.Agent.publish_reverse Sending message to localhost:4503 07.04.2010 12:09:22.385 *INFO* [Reverse Replication Processor] com.day.cq.replication.Agent.publish_reverse >> GET /bin/receive HTTP/1.0 07.04.2010 12:09:22.385 *INFO* [Reverse Replication Processor] com.day.cq.replication.Agent.publish_reverse >> Action: {action} 07.04.2010 12:09:22.385 *INFO* [Reverse Replication Processor] com.day.cq.replication.Agent.publish_reverse >> Path: {path} 07.04.2010 12:09:22.385 *INFO* [Reverse Replication Processor] com.day.cq.replication.Agent.publish_reverse >> Handle: {path} 07.04.2010 12:09:22.385 *INFO* [Reverse Replication Processor] com.day.cq.replication.Agent.publish_reverse -- 07.04.2010 12:09:22.385 *INFO* [Reverse Replication Processor] com.day.cq.replication.Agent.publish_reverse << HTTP/1.1 200 OK 07.04.2010 12:09:22.385 *INFO* [Reverse Replication Processor] com.day.cq.replication.Agent.publish_reverse << Connection: Keep-Alive 07.04.2010 12:09:22.385 *INFO* [Reverse Replication Processor] com.day.cq.replication.Agent.publish_reverse << Server: Day-Servlet-Engine/4.1.8 07.04.2010 12:09:22.385 *INFO* [Reverse Replication Processor] com.day.cq.replication.Agent.publish_reverse << Content-Type: application/octet-stream 07.04.2010 12:09:22.385 *INFO* [Reverse Replication Processor] com.day.cq.replication.Agent.publish_reverse << Content-Length: 1486 07.04.2010 12:09:22.385 *INFO* [Reverse Replication Processor] com.day.cq.replication.Agent.publish_reverse << Date: Wed, 07 Apr 2010 10:09:22 GMT 07.04.2010 12:09:22.385 *INFO* [Reverse Replication Processor] com.day.cq.replication.Agent.publish_reverse Message sent. 07.04.2010 12:09:22.385 *INFO* [Reverse Replication Processor] com.day.cq.replication.Agent.publish_reverse ------------------------------------------------ 07.04.2010 12:09:22.385 *INFO* [Reverse Replication Processor] com.day.cq.replication.Agent.publish_reverse Reverse replication successful. 07.04.2010 12:09:22.460 *INFO* [Reverse Replication Processor] com.day.cq.replication.content.durbo.DurboImporter imported content in 68ms for durbo request on path: /content/usergenerated/comments/form1/c1270634936890-882

Telechargement

 

D'autres articles connexes :

 Adobe

Recevez de l’aide plus rapidement et plus facilement

Nouvel utilisateur ?