Feature Applications

Overview

The feature applications contained in the Getting Started samples (download) provide in-depth examples of how to use particular Fabric3 features, such as pub/sub eventing and are located under /features. As with the starter applications, a feature application can be built and deployed to the server located under /server. For instructions on building the Fabric3 servers, see Starter Applications.

Channels

This sample demonstrates how to use pub/sub messaging and channels. Features covered are: LMAX Disruptor integration, ordered consumers, pooled workers, strongly-typed channels, and batch notifications.

For more on SCA eventing and pub/sub communications, see Channels.

Eventing

The eventing sample demonstrates the use of channels to develop applications based on pub/sub communications and asynchronous events. 

Hibernate

This application demonstrates exposing a component as a REST resource using JAX-RS annotations and persisting the resource to a database using Hibernate and declarative transactions. The sample also demonstrates how to configure application data sources. The hibernate-client module provides a client to access the resource using the JAX-RS Jersey client API.

To run the hibernate-client from the commandline change to the /features/hibernate-client and type

mvn exec:java

Note the hibernate module jar must be deployed first and the server must be running in order to run the hibernate client. For more on using Hibernate and JPA with Fabric3, see Hibernate and JPA.

Integration Test

This sample shows how to use the Fabric3 iTest plugin to create automated integration tests. The iTest plugin provides full in-container testing as part of a Maven build. 

Monitor Extension

This application demonstrates how to write a logging extension for the Fabric3 low-latency, garbage-free monitor framework. This framework provides extremely high-performance processing of application events such a log data. The monitor framework uses type-safe proxies generated from application supplied interfaces for emitting events. The framework is designed for low-latency applications (where traditional logging solutions are not viable) and is able to persist messages to disk in sub-microsecond time with no object allocation. The sample demonstrates monitor configuration as well as extending the framework to create custom event sinks.  

For more information on the monitoring framework, see Monitoring and Logging.

Streaming

This sample demonstrates how to write streaming services capable of efficiently processing very large input messages typically encountered in batch style applications.  

Timers

The timer sample demonstrates use of timer components to fire events at a specified interval. Two timers are deployed: a highly-available clustered singleton and a stateless timer that is deployed to all participants in a zone (cluster). The sample can be run on the single VM server or the distributed domain.

For more on timers, see Timer Components.

Wiring

This sample illustrates advanced wiring techniques including ordered injection and Map-based service references. These features are useful for applications that require support for extension points such as a message-processing service or rules engine that must dispatch to handlers or rule evaluators. A number of patterns are covered, including registries, white board and key-based message dispatch.