A registry for
implementations, which allows
to be eagerly/lazily loaded across multiple contexts. The order in which
implementations are added to the registry determines their priority, with
returning as soon as the first non-null implementation is encountered.
In embedded mode we only expect a single factory implementation to be present as custom policy implementations are
provided during runtime by the user or loaded via the
's classloader. However, in server mode it's possible
for users to deploy their custom policies to the server or use one of the default policies, therefore it's necessary
for both the embedded factory and a server factory to be utilised.