JBoss Fuse is an open source Enterprise Service Bus(ESB) combine a number of technologies –
Fuse Fabric technology layer supports the scalable deployment of JBoss Fuse containers across a network. It enables a variety of advanced features, such as remote installation and provisioning of containers; phased rollout of new versions of libraries and applications; load-balancing and failover of deployed endpoints.
Supported File Types
Fuse Folder Structure
pom.xml
src/
src/main/
src/java/
src/resources/
META-INF/spring/*.xml
OSGI-INF/blueprint/*.xml
test/
test/java/
test/resources/
target/
Deployment Metadata
META-INF/MANIFEST.MF
Can provide deployment metadata either for an OSGi bundle (in bundle headers) or for a FAB.
META-INF/maven/groupId/artifactId/pom.xml
POM file—which is normally embedded in any Maven-built JAR file—is the main source of deployment metadata for a FAB.
WEB-INF/web.xml
web.xml file is the standard descriptor for an application packaged as a Web ARchive(WAR).
Dependency Injection(DI)
Fuse supports two forms of dependency injection – spring and OSGI blueprint.xml
The approach to dependency injection is similar – but the key difference is that blueprint is tailored for OSGI, and can add dependencies through XML schema namespaces. While spring requires these to be added through maven-bundle-plugin.
The advice for using FUSE is to stick with blueprint as it is more closely bound to the OSGI container
Example Spring – resources/META-INF/spring/*.xml
<?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&period=2000"/> <to uri="log:ExampleRouter"/> </route> </camelContext> </beans>
Example Blueprint – OSGI-INF/blueprint/*.xml
<?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&period=2000"/> <to uri="log:ExampleRouter"/> </route> </camelContext> </blueprint>
Fuse Fabric
Fuse Fabric is the framework that supports the scalable deployment within Fuse Containers in a network environment. It includes services like remove installation, provisioning, load balancing and phased rollouts. At its core is the fabric registry(fabric database) which stores the information needed to manage/provision containers. A fabric allows a distributed network of containers to be managed across multiple hosts
Fabric server
Registry Service – replicable database & child containers
InstallDir/etc/system.properties – Java system properties that affect installed bundles
InstallDir/etc/config.properties – Java system properties that affect the Apache Karaf container
Reference
http://www.jboss.org/products/fuse/overview/
http://www.jboss.org/products/fuse/resources/#demos
https://access.redhat.com/documentation/en-US/Red_Hat_JBoss_Fuse/6.1/html/Fabric_Guide/PartBasic.html
http://docs.spring.io/osgi/docs/2.0.0.M1/reference/html/blueprint.html
http://www.ibm.com/developerworks/opensource/library/os-osgiblueprint