Choosing a Runtime
Fabric3 is designed to run in a variety of environments and provide application portability between them. This is important for flexibility when deploying into different production environments but also essential for effective iterative development. Fabric3 supports running applications out-of-container, in an integration test environment, or in a managed environment such as a JEE application server with minor configuration changes. This provides an efficient and automated mechanism for conducting local testing, integration testing, and production deployment. The following are brief descriptions of the available Fabric3 runtimes:
- The Standalone Server: Fabric3 includes a server that can be run in a single VM or in a distributed environment with multiple runtime clusters.
- The Fabric3 Tomcat Runtime: This runtime is hosted in a Tomcat server. The Fabric3 Tomcat Runtime is integrated with Tomcat facilities including JMX and logging. This runtime provides additional services including support for service clustering, JTA transactions, and datasource pooling.
- The Fabric3 WebLogic Runtime: This runtime is hosted in a WebLogic server. The Fabric3 WebLogic Runtime is integrated with WebLogic facilities including clustering, transactions, datasources, JMX and logging.
- The iTest Runtime: The iTest runtime allows applications to be tested as part of a Maven project build. Fabric3 provides facilities for writing automated tests and mock services that can used to verify a complete application or individual subsystems in an automated fashion.
- The Ant Runtime: The Ant runtime allows applications to be tested as part of a Ant project build. Similar to the Maven runtime, this distribution provides facilities for writing automated tests and mock services that can used to verify a complete application or individual subsystems in an automated fashion.
Runtime Layout
The runtime image is organized as:
/bin |
|
|
|
|
Startup modules |
|
/lib |
|
|
|
|
Modules required to start the runtime host |
|
/boot |
|
|
|
|
Modules required for the runtime bootstrap and primordial system services |
|
/host |
|
|
|
|
Libraries shared between the runtime and application (e.g. web services annotations) |
|
/extensions |
|
|
|
|
Extension modules that are able to be loaded by all runtime instances |
|
/runtimes |
|
|
|
|
Specific runtime instance configuration is hosted by default under this directory |
|
|
<runtime-name> |
|
|
top level directory for a runtime configuration |
|
|
|
|
/config |
|
|
Contains systemConfig.xml for configuring the runtime and extensions |
|
|
|
/deploy |
|
|
File system deploy directory for the controller and single-VM runtimes |
|
|
|
/repository |
|
|
|
|
|
|
|
/runtime |
|
Extensions only loaded for the runtime image |
|
|
|
|
/user |
|
User contributions (only populated on the controller and single-VM runtimes) |
|
|
|
/data |
|
|
Persistent data directory for a runtime instance (e.g. transaction log) |
|
|
|
/tmp |
|
|
Temporary data and artifact cache for a runtime instance |
|
For basic startup, the runtime name is required, which maps to a configuration under runtimes:
java -jar server.jar controller |
launches a runtime using the runtimes/controller image |
java -jar server.jar vm |
launches a runtime using the runtimes/vm image |
java -jar server.jar participant |
launches a runtime using the runtimes/participant image |
java -jar server.jar foo |
launches a custom runtime using the runtimes/foo image |