Package javax.persistence.spi
Class PersistenceProviderResolverHolder.DefaultPersistenceProviderResolver
java.lang.Object
javax.persistence.spi.PersistenceProviderResolverHolder.DefaultPersistenceProviderResolver
- All Implemented Interfaces:
PersistenceProviderResolver
- Enclosing class:
PersistenceProviderResolverHolder
private static class PersistenceProviderResolverHolder.DefaultPersistenceProviderResolver
extends Object
implements PersistenceProviderResolver
Default provider resolver class to use when none is explicitly set.
Uses service loading mechanism as described in the Jakarta Persistence
specification. A ServiceLoader.load() call is made with the current context
classloader to find the service provider files on the classpath.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate class
Key used for cached persistence providers.private static interface
The common interface to get a CacheKey implemented by LoaderReference and PersistenceProviderReference.private class
References to class loaders are weak references, so that they can be garbage collected when nobody else is using them.private class
References to persistence provider are soft references so that they can be garbage collected when they have no hard references. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate Logger
private static final String
private HashMap
<PersistenceProviderResolverHolder.DefaultPersistenceProviderResolver.CacheKey, PersistenceProviderResolverHolder.DefaultPersistenceProviderResolver.PersistenceProviderReference> Cached list of available providers cached by CacheKey to ensure there is not potential for provider visibility issues.private static final ReferenceQueue
Queue for reference objects referring to class loaders or persistence providers. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
Clear all cached providersprivate static ClassLoader
WrapsThread.currentThread().getContextClassLoader()
into a doPrivileged block if security manager is presentReturns a list of thePersistenceProvider
implementations available in the runtime environment.private void
private void
Remove garbage collected cache keys invalid input: '&' providers.
-
Field Details
-
providers
private volatile HashMap<PersistenceProviderResolverHolder.DefaultPersistenceProviderResolver.CacheKey,PersistenceProviderResolverHolder.DefaultPersistenceProviderResolver.PersistenceProviderReference> providersCached list of available providers cached by CacheKey to ensure there is not potential for provider visibility issues. -
referenceQueue
Queue for reference objects referring to class loaders or persistence providers. -
LOGGER_SUBSYSTEM
- See Also:
-
logger
-
-
Constructor Details
-
DefaultPersistenceProviderResolver
private DefaultPersistenceProviderResolver()
-
-
Method Details
-
getPersistenceProviders
Description copied from interface:PersistenceProviderResolver
Returns a list of thePersistenceProvider
implementations available in the runtime environment.- Specified by:
getPersistenceProviders
in interfacePersistenceProviderResolver
- Returns:
- list of the persistence providers available in the environment
-
processQueue
private void processQueue()Remove garbage collected cache keys invalid input: '&' providers. -
getContextClassLoader
WrapsThread.currentThread().getContextClassLoader()
into a doPrivileged block if security manager is present -
log
-
clearCachedProviders
public void clearCachedProviders()Clear all cached providers- Specified by:
clearCachedProviders
in interfacePersistenceProviderResolver
-