有时我必须向camel注册表添加一个对象(当然还有java).在大多数情况下,它是一个dataSource.
我的问题是我无法弄清楚一般的工作方式.
我总是开始获得注册表:
getContext().getRegistry();
Run Code Online (Sandbox Code Playgroud)
但"注册表"没有任何添加对象的方法.所以我必须尝试(使用调试器)正在使用哪种注册表
getContext().getRegistry(some.class)<some method to add something>;
Run Code Online (Sandbox Code Playgroud)
例如,在一个项目(骆驼蓝图)中,我必须打电话
SimpleRegistry registry = new SimpleRegistry();
registry.put("some", bean);
getContext().getRegistry(CompositeRegistry.class).addRegistry(registry);
Run Code Online (Sandbox Code Playgroud)
现在我创建了一个具有相同结构的项目(也是相同的maven父项),但现在上面的代码停止工作,因为由于某种原因现在camel使用了PropertyPlaceholderDelegateRegistry我确信会有代码来添加我的bean但是;
是否有适用于每个设置的代码可以为camels注册表添加内容?
这是在RouteBuilder类中向注册表添加内容的一种方法.下面我将添加一个TCPServerInitializerFactory,稍后将使用它.我总是使用camel-blueprint原型,但是使用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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3869 次 |
| 最近记录: |