2016-11-09 6 views
1

私はキャメルレジストリにオブジェクトを追加する必要があります(もちろんjavaもあります)。ほとんどの場合、データソースです。キャメルレジストリに何かを追加する方法 - 一般的には

私の問題は、一般的な作業方法を理解できないことです。

私はいつも、レジストリを取得するために開始:

getContext().getRegistry(); 

しかし、「レジストリ」のオブジェクトを追加するための任意の方法を持っていません。だから、私は私が同じでプロジェクトを作成し

SimpleRegistry registry = new SimpleRegistry(); 
registry.put("some", bean); 
getContext().getRegistry(CompositeRegistry.class).addRegistry(registry); 

呼び出す必要があるプロジェクト(ラクダの青写真)に例えば

getContext().getRegistry(some.class)<some method to add something>; 

使用されているレジストリの種類(デバッガで)試してみて下さい構造体(同じMavenの親)でも、上のコードは何らかの理由で今ではPropertyPlaceholderDelegateRegistryを使用しているので、私のBeanを追加するコードが存在すると確信しています。

すべてのセットアップでラクダのレジストリに何かを追加するコードはありますか?

答えて

4

これは、RouteBuilderクラスのレジストリにstuffを追加する方法の1つです。私は後で使用されるTCPServerInitializerFactoryを追加しています。私はいつもcamel-blueprint archetypeを使用しますが、java dslを使用してルートを作成します。これは私のためにうまく動作します。

TCPServerInitializerFactory serverFactory = new TCPServerInitializerFactory(null); 
final CamelContext camelContext = getContext(); 
     final org.apache.camel.impl.SimpleRegistry registry = new org.apache.camel.impl.SimpleRegistry(); 
     final org.apache.camel.impl.CompositeRegistry compositeRegistry = new org.apache.camel.impl.CompositeRegistry(); 
     compositeRegistry.addRegistry(camelContext.getRegistry()); 
     compositeRegistry.addRegistry(registry); 
     ((org.apache.camel.impl.DefaultCamelContext) camelContext).setRegistry(compositeRegistry); 
    registry.put("spf", serverFactory); 
+0

ない美しいが、すべてのケースで動作するはずです - 感謝 – dermoritz

+0

アムは確かに整然と方法がありますが、私が見つけた最もアプローチは、純粋なJavaのアプローチではなく、私が一緒に仕事青写真/ OSGiのの1のためでした。 –

+0

純粋なJavaアプローチは何ですか? – dermoritz

関連する問題