Chapter 15. Camel Bean Integration
Camel annotations Copy linkLink copied to clipboard!
As part of the Camel bean integration, Camel comes with a set of annotations that are seamlessly supported by Camel CDI. So you can use any of these annotations in your CDI beans, for example:
| Camel annotation | CDI equivalent | |
| Configuration property |
| If using DeltaSpike configuration mechanism:
See configuration properties for more details. |
| Producer template injection (default Camel context) |
|
|
| Endpoint injection (default Camel context) |
|
|
| Endpoint injection (Camel context by name) |
|
|
| Bean injection (by type) |
|
|
| Bean injection (by name) |
|
|
| POJO consuming |
|
Bean component Copy linkLink copied to clipboard!
You can refer to CDI beans, either by type or name, From the Camel DSL, for example with the Java Camel DSL:
class MyBean {
//...
}
from("direct:inbound").bean(MyBean.class);
Or to lookup a CDI bean by name from the Java DSL:
@Named("foo")
class MyNamedBean {
//...
}
from("direct:inbound").bean("foo");
Referring beans from Endpoint URIs Copy linkLink copied to clipboard!
When configuring endpoints using the URI syntax you can refer to beans in the Registry using the # notation. If the URI parameter value starts with a # sign then Camel CDI will lookup for a bean of the given type by name, for example:
from("jms:queue:{{destination}}?transacted=true&transactionManager=#jtaTransactionManager").to("...");
Having the following CDI bean qualified with @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;
}