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 le org.hibernate.service.ServiceRegistryBuilder via sa méthode addInitiator.
  • Il vous suffit d'instancier la classe de service et de l'ajouter au org.hibernate.service.ServiceRegistryBuilder via sa méthode addService.
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;
       }
   }