Fabric3 is a platform for developing, assembling, and managing distributed services. Fabric3 provides the following features:
- Java programming features such as asynchronous invocations and pub/sub channels for building loosely-coupled systems that can be used with POJOs or Spring.
- Local and remote service wiring and dependency injection. Think of Spring or Guice for distributed, loosely coupled services.
- Support for multiple communication protocols and messaging patterns in a unified, consistent manner without tying application logic to specific transport APIs. Use ZeroMQ, REST, messaging middleware (JMS), Web Services, and file-based transports without polluting application code with complex API calls and configuration.
- A management framework for provisioning, controlling, and monitoring production deployments via a RESTful API.
- Portability across a variety of middleware environments including Tomcat, and WebLogic.
- Support for open standards including JAX-RS, JPA, WS-*, and SCA.
If you would like a hands-on example of how Fabric3 simplifies application development and the advantages it brings, please look at the BigBank sample application.
In this chapter, we cover the basics of setting up and deploying an application using Fabric3.
The documentation assumes a basic understanding of SCA concepts. Before proceeding, if you have not done so, we recommend familiarizing yourself with SCA. The specifications themselves (http://www.oasis-opencsa.org) are generally not the most accessible source of introductory information. We recommend:
- A quick synopsis given in Programming Concepts.
- David Chappell, "Introducing SCA" (http://www.davidchappell.com/writing/Introducing_SCA.pdf), which presents a balanced and accurate overview of SCA.
- Jim Marino and Michael Rowley, Understanding SCA (Addison-Wesley), which provides an in-depth treatment of SCA using Fabric3.
The Fabric3 samples are organized as follows:
- Getting Started: Contains several variations of a calculator application that show how to create services, wire them, and expose them as a web services endpoint and REST resource. Also
contains applications that demonstrate how to use specific Fabric3 features, including JPA/Hibernate, pub/sub eventing, advanced wiring, and timers.
- BigBank. BigBank demonstrates how to build an end-to-end application composed of distributed services.
- FastQuote is a Forex trading application that shows how to build low-latency, high-performance services.
For projects that intend to use Spring, Fabric3 also ships with a set of dedicated Spring samples. These samples are a subset of the SCA Java samples described in this chapter, with SCA Java components replaced by Spring beans. Basic layout, configuration and deployment remain the same across both sets of samples.
The samples may be downloaded from http://www.fabric3.org/downloads and require the following software:
- JDK 7.0 or later.
- Maven 3.1.1 or later. Maven can be downloaded from http://maven.apache.org/download.html.
Note that it is not necessary to download the Fabric3 runtime distribution in addition to the samples. The build process will automatically download a distribution and configure a Fabric3 runtime for use with the sample applications.