The Fabric3 runtime may be deployed to multiple host environment types, including:
- Its own lightweight server, the F3Server
- JEE application servers including Geronimo, JBoss, Oracle, WebLogic, and Websphere
- Servlet containers such as Jetty and Tomcat
- OSGi containers including Apache Felix and Eclipse Equinox
One or more Fabric3 runtime nodes constitute a domain. A domain is a realm of management and control that encompasses a set of components and the runtime nodes they are deployed to. There may be one or multiple domains in an organization depending on how it chooses to manage its infrastructure. Further, domains can be large or small; they may span geographically distributed datacenters or be contained within a single VM:
Local and Distributed Domains
Domains are either local or remote. Local domains run within a single VM while distributed domains span multiple VMs and therefore consist of several runtime nodes. Fabric3 provides a number of distributions tailored to local and distributed domain configurations.
Local Domains
A local domain is a single-VM configuration where all operations occur on one node, including deployment and component provisioning. There are three single-VM host environments:
- A Development Runtime that may be embedded in an IDE for rapid prototyping
- A Maven-based iTest Runtime for integration testing
- A Webapp Runtime that may be embedded in a Web Application Archive (WAR)
- A single-VM Standalone Server where all components are collocated
Distributed Domains
Distributed domains span multiple VMs, potentially in geographically diverse regions. Regardless of the host environment it is deployed on, a Fabric3 runtime node may participate in a distributed domain. This allows users to construct federated domains with nodes running on a variety of host environments. For example, a domain may consist of a combination of F3Servers, JEE application servers, and Servlet engines. When a node is part of a distributed domain, it is known as a "participant." The following represents a typical federated domain topology:

It is the responsibility of the Fabric3 Controller to coordinate and manage this heterogenous domain. Runtime nodes advertise their capabilities (known as "features") to the Fabric3 Controller, which in turn can use that information to make intelligent provisioning decisions. For example, the Controller can provision a component requiring transactions or a certain level of reliability to particular host environments or nodes according to the features they provide.
Fabric3 includes several federated distributions:
- A Federated Server
- A Federated Servlet Runtime where the Fabric3 runtime may be hosted in a Servlet engine and participate in a distributed domain (forthcoming)
- A Federated JEE Runtime where the Fabric3 runtime may be hosted in a JEE application server and participate in a distributed domain (forthcoming)
Choosing a Distribution
To get started with Fabric3, it is recommended users download the Standalone Runtime, and follow the Tutorials. To run Fabric3 in a distributed environment, use one of the federated runtimes.

