60.8. Camel Bean の統合
60.8.1. Camel アノテーション リンクのコピーリンクがクリップボードにコピーされました!
Camel Bean 統合 の一部として、Camel には、Camel CDI によってシームレスにサポートされる一連の アノテーション が付属しています。したがって、CDI Bean でこれらのアノテーションのいずれかを使用できます。
| Camel アノテーション | CDI 相当 | |
|---|---|---|
| 設定プロパティー |
| DeltaSpike 設定メカニズム を使用する場合:
詳細については、設定プロパティーを参照してください。 |
| プロデューサーテンプレートインジェクション (デフォルトの Camel コンテキスト) |
|
|
| エンドポイントインジェクション (デフォルトの Camel コンテキスト) |
|
|
| エンドポイントインジェクション (名前による Camel コンテキスト) |
|
|
| Bean インジェクション (種類別) |
|
|
| Bean インジェクション (名前別) |
|
|
| POJO consuming |
|
60.8.2. Bean コンポーネント リンクのコピーリンクがクリップボードにコピーされました!
Java Camel DSL などを使用して、Camel DSL から、タイプまたは名前で CDI Bean を参照できます。
class MyBean {
//...
}
from("direct:inbound").bean(MyBean.class);
または、Java DSL から名前で CDI Bean を検索するには:
@Named("foo")
class MyNamedBean {
//...
}
from("direct:inbound").bean("foo");
60.8.3. エンドポイント URI からの Bean の参照 リンクのコピーリンクがクリップボードにコピーされました!
URI 構文を使用してエンドポイントを設定する場合、# 表記を使用してレジストリー内の Bean を参照できます。URI パラメーター値が # 記号で始まる場合、Camel CDI は指定されたタイプの Bean を名前で検索します。以下に例を示します。
from("jms:queue:{{destination}}?transacted=true&transactionManager=#jtaTransactionManager").to("...");
次の CDI Bean を @Named("jtaTransactionManager") で修飾します。
@Produces
@Named("jtaTransactionManager")
PlatformTransactionManager createTransactionManager(TransactionManager transactionManager, UserTransaction userTransaction) {
JtaTransactionManager jtaTransactionManager = new JtaTransactionManager();
jtaTransactionManager.setUserTransaction(userTransaction);
jtaTransactionManager.setTransactionManager(transactionManager);
jtaTransactionManager.afterPropertiesSet();
return jtaTransactionManager;
}