OSGi containers and other modular environments tend to hide service files and consider them implementation details. That means that a naive current classloader based implementation won't discover the various CDI implementations.
There are several approaches to try and work around this problem in EE specs
JPA 2 does have a static getter / setter pair
which holds the resolver to use. A modular environment is free to override the default resolver.
Bean Validation uses a different approach to work around the nasty static field.
Note that Bean VAlidation approach has another benefit, you can physically ask for a specific Bean Validation provider implementation