リバースレプリケーションの使用方法、およびそれが動作していることを確認するために何が必要なのか

Out-of-the-box, only cq:Page ノードが reverse replicate されているその他のノードについては、プロジェクト固有の実装として 2 つの最後のメソッドを使用する必要があります。

3 つの可能性があります。

  • SlingPostServlet(カスタム post サーブレットまたは POST.jsp を作成しない)を使用して、関連する PageEvent を暗黙的にトリガーするように、post を作成しません。次に、プロパティ名「cq : distribution」を設定し、複製するノードで値を「true」に設定します。
    • このソリューションを実装するには、任意のコードを記述する必要はありません。。Form コンポーネントを使用して、必要な非表示フィールドをすべて設定できます。
  • リポジトリにアクセスする独自のコードを使用して、プロパティ "cq:lastModified"、"cq:lastModifiedBy" および "cq:distribute" を変更します。
    • 投稿済みデータは制御でき、内部コードはデータを書き込みます。
    • このソリューションを実装するには、プロジェクトのコードを記述する必要があります。
  • 配布モードを使用するオプションとともに、Replicator サービスからレプリケートメソッドを呼び出す独自のコードを使用します。
    • レプリケーションはコードから制御されます。
    • このソリューションを実装するには、プロジェクトに固有のコードを記述します。

独自のコードを使用したリバースレプリケーションソリューションの実装

  • 次のコードを追加すると、リバースレプリケートするページに関連するイベントが発生します(以下はサンプル 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(); ...

 

添付されているのは、コンポーネントを使用してフォームをレンダリングし、以前の投稿を表示する例です。各投稿には、テキストが含まれている段落を含むサブページが作成されます。これにより、各投稿を個別に管理することができます(そして、他のパブリッシュインスタンスから生成された投稿による衝突を回避できます)。ストレージ場所はコンポーネントダイアログ(つまり、siteadmin のフォルダーを使用し作成できる、/content/usergenerated/comments/form1)のパラメーターとして定義されます。

作成者インスタンスでは、ページがコメントページの下に作成されたときに起動するワークフローモデルを定義できます。

作成者のコンテンツの公開を再度有効にする場合は、ワークフローの cq:distribute 値を必ず消去してください。そうしなければ、終わりのないループに陥ります。

パブリッシュインスタンスで、ユーザーがコンテンツを作成する十分な権限を持っていることを確認します。匿名でテストする場合は、指定された JCR パスに対して CRX Explorer を使用して権限を変更します。

レプリケーションに関する注意

レプリケーションが適切に機能するようにするには、次のルールに従ってデータをストア:
(1) レプリケートされた(ルート)ノードタイプは nt:hierarchyNode を拡張しなけれなならない
(2) nt:hierarchyNodes でない全ての直属の子ノードは統計されなければならない
(3) ノードタイプを除いた、(2)の全てのサブツリーは統計されなければならない

Adobe は、cq の使用を推奨しています:ページ(/jcr:content)をデータのコンテナとして使用することで、簡単に管理し、ユーザーインターフェイス(siteadmin など)で使用することができます。PageManager API を使用してページを作成できます。

パブリッシュにログオンすることで、外部リバースレプリケーションが表示されます

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

オーサーにログオンすることで、内部リバースレプリケーションが表示されます

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

ダウンロード

 

他の関連記事:

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー