LibraryToggle FramesPrintFeedback

Spring and Blueprint Frameworks

Overview

The OSGi framework allows third-party frameworks to be piggybacked on top of it. In particular, Fuse ESB Enterprise enables the Spring framework and the blueprint framework, by default. In the case of the Spring framework, OSGi automatically activates any Spring XML files under the META-INF/spring/ directory in a JAR, and Spring XML files can also be hot-deployed to the ESBInstallDir/deploy directory. In the case of the blueprint framework, OSGi automatically activates any blueprint XML files under the OSGI-INF/blueprint/ directory in a JAR, and blueprint XML files can also be hot-deployed to the ESBInstallDir/deploy directory.

Configuration files

There are two kinds of file that you can use to configure your project:

  • Spring configuration—in the standard Maven directory layout, Spring XML configuration files are located under ProjectDir/src/main/resources/META-INF/spring.

  • Blueprint configuration—in the standard Maven directory layout, blueprint XML configuration files are located under ProjectDir/src/main/resources/OSGI-INF/blueprint.

If you decide to use the blueprint configuration, you can embed camelContext elements in the blueprint file, as described in Blueprint configuration file.

Prerequisites for blueprint configuration

If you decide to configure your Apache Camel application using blueprint, you must ensure that the camel-blueprint feature is installed. If necessary, install it by entering the following console command:

karaf@root> features:install camel-blueprint

Spring configuration file

You can deploy a camelContext using a Spring configuration file, where the root element is a Spring beans element and the camelContext element is a child of the beans element. In this case, the camelContext namespace must be http://camel.apache.org/schema/spring.

For example, the following Spring configuration defines a route that generates timer messages every two seconds, sending the messages to the ExampleRouter log (which get incorporated into the console log file, InstallDir/data/log/servicemix.log):

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       >

  <camelContext xmlns="http://camel.apache.org/schema/spring">
    <route>
      <from uri="timer://myTimer?fixedRate=true&amp;period=2000"/>
      <to uri="log:ExampleRouter"/>
    </route>
  </camelContext>

</beans>

It is not necessary to specify schema locations in the configuration. But if you are editing the configuration file with an XML editor, you might want to add the schema locations in order to support schema validation and content completion in the editor. For the preceding example, you could specify the schema locations as follows:

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
    ...

Blueprint configuration file

Before deploying routes in a blueprint configuration file, check that the camel-blueprint feature is already installed.

You can deploy a camelContext using a blueprint configuration file, where the root element is blueprint and the camelContext element is a child of the blueprint element. In this case, the camelContext namespace must be http://camel.apache.org/schema/blueprint.

For example, the following blueprint configuration defines a route that generates timer messages every two seconds, sending the messages to the ExampleRouter log (which get incorporated into the console log file, InstallDir/data/log/servicemix.log):

<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    >

  <camelContext xmlns="http://camel.apache.org/schema/blueprint">
    <route>
      <from uri="timer://myTimer?fixedRate=true&amp;period=2000"/>
      <to uri="log:ExampleRouter"/>
    </route>
  </camelContext>

</blueprint>
[Note]Note

Blueprint is a dependency injection framework, defined by the OSGi standard, which is similar to Spring in many respects. For more details about blueprint, see The Blueprint Container.

Comments powered by Disqus