Red Hat Training
A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform
12.5.5. Services personnalisés
12.5.5.1. Services personnalisés
Une fois qu'un
org.hibernate.service.ServiceRegistry
est créé, il est considéré comme immuable. Les services eux-mêmes pourraient accepter une reconfiguration, mais ici, l'immuabilité signifie un ajout/remplacement des services. Et donc, un autre rôle assuré par org.hibernate.service.ServiceRegistryBuilder
est de permettre de peaufiner des services qui figureront dans le org.hibernate.service.ServiceRegistry
qu'il génère.
Il y a deux façons d'informer le
org.hibernate.service.ServiceRegistryBuilder
à propos de services personnalisés.
- Implémenter une classe
org.hibernate.service.spi.BasicServiceInitiator
pour contrôler la construction sur demande de la classe du service et y ajouter leorg.hibernate.service.ServiceRegistryBuilder
via sa méthodeaddInitiator
. - Il vous suffit d'instancier la classe de service et de l'ajouter au
org.hibernate.service.ServiceRegistryBuilder
via sa méthodeaddService
.
L'ajout d'une approche de service ou l'ajout d'une approche d'initiateur sont valables pour l'extension d'un registre (ajout de nouveaux rôles de service) et pour la substitution de services (remplacer les implémentations de service).
Exemple 12.22. Utiliser ServiceRegistryBuilder pour remplacer un service existant par un service personnalisé
ServiceRegistryBuilder registryBuilder = new ServiceRegistryBuilder( bootstrapServiceRegistry ); registryBuilder.addService( JdbcServices.class, new FakeJdbcService() ); ServiceRegistry serviceRegistry = registryBuilder.buildServiceRegistry(); public class FakeJdbcService implements JdbcServices{ @Override public ConnectionProvider getConnectionProvider() { return null; } @Override public Dialect getDialect() { return null; } @Override public SqlStatementLogger getSqlStatementLogger() { return null; } @Override public SqlExceptionHelper getSqlExceptionHelper() { return null; } @Override public ExtractedDatabaseMetaData getExtractedMetaDataSupport() { return null; } @Override public LobCreator getLobCreator(LobCreationContext lobCreationContext) { return null; } @Override public ResultSetWrapper getResultSetWrapper() { return null; } }