Fuse 6 is no longer supported
As of February 2025, Red Hat Fuse 6 is no longer supported. If you are using Fuse 6, please upgrade to Red Hat build of Apache Camel.第78章 JCR
JCR コンポーネント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
jcr
コンポーネントを使用すると、プロデューサーで JCR 準拠のコンテンツリポジトリー( Apache Jackrabbitなど)との間でノードを追加/読み取るか、コンシューマーに EventListener
を登録できます。
Maven ユーザーは、このコンポーネントの
pom.xml
に以下の依存関係を追加する必要があります。
URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
jcr://user:password@repository/path/to/node
jcr://user:password@repository/path/to/node
コンシューマーの追加
Camel 2.10 以降では、コンシューマーを JCR の EventListener またはプロデューサーとして使用して、識別子でノードを読み取ることができます。
使用方法 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
URI の
repository
要素は、Camel コンテキストレジストリーで JCR Repository
オブジェクトを検索するために使用されます。
プロデューサー リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | デフォルト値 | 説明 |
---|---|---|
CamelJcrOperation
|
CamelJcrInsert
|
使用する CamelJcrInsert または CamelJcrGetById 操作 |
CamelJcrNodeName
|
null
|
使用するノード名を決定するために使用されます。 |
CamelJcrNodeType
|
null
|
Camel 2.16: 新規ノードの追加時にプライマリーノードタイプを指定します。 |
メッセージが JCR プロデューサーエンドポイントに送信される場合:
- 操作が CamelJcrInsert: コンテンツリポジトリーに新しいノードが作成されると、IN メッセージのすべてのメッセージヘッダーが
javax.jcr.Value
インスタンスに変換され、新規ノードに追加され、ノードの UUID が OUT メッセージで返されます。 - 操作が
CamelJcrGetById
の場合:メッセージボディーをノード識別子として使用して、新しいノードがリポジトリーから取得されます。
注記
JCR Producer は、2.12.3 より前の Camel バージョンのメッセージヘッダーではなく、メッセージプロパティーを使用していました。
コンシューマー リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
コンシューマーは定期的に JCR に接続し、メッセージボディーで
List<javax.jcr.observation.Event>
を返します。
名前 | デフォルト値 | 説明 |
---|---|---|
eventTypes
|
0
|
javax.jcr.observation.Event.NODE_ADDED、javax.jcr.observation.Event.NODE_REMOVED などのビットマスク値としてエンコードされた 1 つ以上のイベントタイプの組み合わせ。 |
deep
|
false
|
true の場合、関連付けられた親ノードが現在のパスまたはそのサブグラフ内にあるイベントを受け取ります。 |
UUID
|
null
|
関連する親ノードにコンマ区切りの uuid 一覧に識別子の 1 つがあるイベントのみが受信されます。 |
nodeTypeNames
|
null
|
関連付けられた親ノードにノードタイプ(またはノード種別のいずれかのサブタイプ)のいずれかがあるイベントのみが受信されます。 |
noLocal
|
false
|
noLocal が true の場合、リスナーが登録されたセッションによって生成されたイベントは無視されます。そうでない場合は、無視されません。
|
sessionLiveCheckInterval
|
60000
|
各セッションがライブチェックするまで待機する間隔(ミリ秒単位)。 |
sessionLiveCheckIntervalOnStart
|
3000
|
最初のセッションがライブチェックされるまで待機する間隔(ミリ秒単位)。 |
username
|
Camel 2.15: URI の authority セクションではなく、URI パラメーターとしてユーザー名を指定できます。 | |
password
|
Camel 2.15: URI の authority セクションではなく、URI パラメーターとしてパスワードを指定できます。 | |
workspaceName
|
null
|
Camel 2.16: デフォルトとは異なるワークスペースを指定できます。 |
例 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
以下のスニペットは、content リポジトリーの
/home/test
ノードに node
という名前のノードを作成します。1 つの追加プロパティーもノードに追加されます。my.contents.property
には送信されるメッセージのボディーが含まれます。
from("direct:a").setHeader(JcrConstants.JCR_NODE_NAME, constant("node")) .setHeader("my.contents.property", body()) .to("jcr://user:pass@repository/home/test");
from("direct:a").setHeader(JcrConstants.JCR_NODE_NAME, constant("node"))
.setHeader("my.contents.property", body())
.to("jcr://user:pass@repository/home/test");
以下のコードは、Event.NODE_ADDED および Event.NODE_REMOVED イベント(イベントタイプ 1 と 2 の両方)のパス import-application/inbox の下に EventListener を登録し、すべての子についてディープをリッスンします。
<route> <from uri="jcr://user:pass@repository/import-application/inbox?eventTypes=3&deep=true" /> <to uri="direct:execute-import-application" /> </route>
<route>
<from uri="jcr://user:pass@repository/import-application/inbox?eventTypes=3&deep=true" />
<to uri="direct:execute-import-application" />
</route>