Configuring CamelPage edited by Claus IbsenChanges (1)
Full ContentHow do I configure endpoints?There are a few different approaches to configuring components and endpoints. Using Java CodeYou can explicitly configure a Component using Java code as shown in this example Or you can explicitly get hold of an Endpoint and configure it using Java code as shown in the Mock endpoint examples. SomeEndpoint endpoint = (SomeEndpoint) camelContext.getEndpoint("someURI"); endpoint.setSomething("aValue");
How do I import routes from other XML filesAvailable as of Camel 2.3 When defining routes in Camel using Xml Configuration you may want to define some routes in other XML files. For example you may have many routes and it may help to maintain the application if some of the routes are in separate XML files. You may also want to store common and reusable routes in other XML files, which you simple can import when needed. In Camel 2.3 this is now possible to define routes outside <camelContext/> which you do in a new <routeContext/> tag. For example we could have a file named myCoolRoutes.xml which contains a couple of routes as shown: myCoolRoutes.xml <!-- this is an included XML file where we only the the routeContext --> <routeContext id="myCoolRoutes" xmlns="http://camel.apache.org/schema/spring"> <!-- we can have a route --> <route id="cool"> <from uri="direct:start"/> <to uri="mock:result"/> </route> <!-- and another route, you can have as many your like --> <route id="bar"> <from uri="direct:bar"/> <to uri="mock:bar"/> </route> </routeContext> Then in your XML file which contains the CamelContext you can use Spring to import the myCoolRoute.xml file. <!-- import the routes from another XML file --> <import resource="myCoolRoutes.xml"/> <camelContext id="myCamel" xmlns="http://camel.apache.org/schema/spring"> <!-- refer to a given route to be used --> <routeContextRef ref="myCoolRoutes"/> <!-- we can of course still use routes inside camelContext --> <route id="inside"> <from uri="direct:inside"/> <to uri="mock:inside"/> </route> </camelContext> Also notice that you can mix and match, having routes inside CamelContext and also externalized in RouteContext. You can have as many <routeContextRef/> as you like.
How do I add a componentYou might first want to read Writing Components for a background in how to implement a new component. You can then register your component explicitly via CamelContext context = new DefaultCamelContext(); context.addComponent("foo", new FooComponent(context)); However you can use the auto-discovery feature of Camel where by Camel will automatically add a Component when an endpoint URI is used. To do this you would create a file called /META-INF/services/org/apache/camel/component/foo with contents class=org.acme.FooComponent (you can add other property configurations in there too if you like) Then if you refer to an endpoint as foo://somethingOrOther Camel will auto-discover your component and register it. The FooComponent can then be auto-injected with resources using the Injector, such as to support Spring based auto-wiring, or to support @Resource (EJB3 style) injection or Guice style @Inject injection. Working with Spring XMLYou can configure a component via Spring using the following mechanism... <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"> </camelContext> <bean id="activemq" class="org.apache.camel.component.jms.JmsComponent"> <property name="connectionFactory"> <bean class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL" value="vm://localhost?broker.persistent=false"/> </bean> </property> </bean> Which allows you to configure a component using some name (activemq in the above example), then you can refer to the component using activemq:[queue:|topic:]destinationName. If you want to add explicit Spring 2.x XML objects to your XML then you could use the xbean-spring which tries to automate most of the XML binding work for you; or you could look in camel-spring at CamelNamespaceHandler you'll see how we handle the Spring XML stuff (warning its kinda hairy code to look at See Also
Change Notification Preferences
View Online
|
View Changes
|
Add Comment
|