title: Hibernate + Jasypt : Unable to resolve name ... as strategy
body: <p>I'm trying to use Jasypt to encrypt the DB password in the <strong>hibernate.cfg.xml</strong> file in my application.
  <br />
  I'm currently using Hibernate <strong>4.3.2</strong> with Jasypt 1.9.2.
  <br />
  <br />
  The following is my configuration : 
  <br />
  <br />
  <strong><em>hibernate.cfg.xml</em></strong></p>
  
  <pre><code>&lt;?xml version='1.0' encoding='utf-8'?&gt;
  &lt;!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"&gt;
  &lt;hibernate-configuration&gt;
      &lt;session-factory&gt;
          &lt;!-- Security  --&gt;
          &lt;property name="connection.provider_class"&gt;org.jasypt.hibernate.connectionprovider.EncryptedPasswordDriverManagerConnectionProvider&lt;/property&gt;
          &lt;property name="connection.encryptor_registered_name"&gt;configurationHibernateEncryptor&lt;/property&gt;
  
          &lt;!-- Database connection settings --&gt;
          &lt;property name="connection.driver_class"&gt;org.h2.Driver&lt;/property&gt;
          &lt;property name="connection.url"&gt;jdbc:h2:db/pappu;AUTO_SERVER=TRUE&lt;/property&gt;
          &lt;property name="connection.username"&gt;pappu&lt;/property&gt;
          &lt;property name="connection.password"&gt;ENC(xsIYbIfGoS2mZ1Tokihdathbuk0JVS2A)&lt;/property&gt;
  
          &lt;!-- JDBC connection pool (use the built-in) --&gt;
          &lt;property name="connection.pool_size"&gt;1&lt;/property&gt;
  
          &lt;!-- SQL dialect --&gt;
          &lt;property name="dialect"&gt;org.hibernate.dialect.H2Dialect&lt;/property&gt;
  
          &lt;!-- Enable Hibernate's automatic session context management --&gt;
          &lt;property name="current_session_context_class"&gt;managed&lt;/property&gt;
  
          &lt;!-- Disable the second-level cache  --&gt;
          &lt;property name="cache.provider_class"&gt;org.hibernate.cache.internal.NoCacheProvider&lt;/property&gt;
  
          &lt;!-- Echo all executed SQL to stdout --&gt;
          &lt;property name="show_sql"&gt;true&lt;/property&gt;
  
          &lt;!-- Drop and re-create the database schema on startup - REMOVE THIS LINE FOR PRODUCTION--&gt;
          &lt;property name="hbm2ddl.auto"&gt;update&lt;/property&gt;
  
          &lt;!-- Mappings --&gt;
  
      &lt;/session-factory&gt;
  &lt;/hibernate-configuration&gt;
  </code></pre>
  
  <p><br />
  <br />
  <strong><em>a part of HibernateUtil.java</em></strong></p>
  
  <pre><code>        try {
               StandardPBEStringEncryptor strongEncryptor = new StandardPBEStringEncryptor();
               HibernatePBEEncryptorRegistry registry = HibernatePBEEncryptorRegistry.getInstance();
               strongEncryptor.setAlgorithm("PBEWithMD5AndTripleDES");
               strongEncryptor.setPassword("test");
               registry.registerPBEStringEncryptor("configurationHibernateEncryptor", strongEncryptor);       
  
               Configuration cfg = new Configuration().configure("/pappu/config/hibernate.cfg.xml");         
               StandardServiceRegistryBuilder sb = new StandardServiceRegistryBuilder();
               sb.applySettings(cfg.getProperties());
               StandardServiceRegistry standardServiceRegistry = sb.build();      
  
               return cfg.buildSessionFactory(standardServiceRegistry);          
          } catch (Throwable ex) {
              // Make sure you log the exception, as it might be swallowed
              System.err.println("Initial SessionFactory creation failed." + ex);
              throw new ExceptionInInitializerError(ex);
          }
  </code></pre>
  
  <p><br />
  When I launch my application I get these errors :
  <br /></p>
  
  <pre><code>Initial SessionFactory creation failed.org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.connections.spi.ConnectionProvider]
  Exception in Application start method
  Exception in thread "main" java.lang.RuntimeException: Exception in Application start method
      at com.sun.javafx.application.LauncherImpl.launchApplication1(Unknown Source)
      at com.sun.javafx.application.LauncherImpl.access$000(Unknown Source)
      at com.sun.javafx.application.LauncherImpl$1.run(Unknown Source)
      at java.lang.Thread.run(Unknown Source)
  Caused by: java.lang.ExceptionInInitializerError
      at pappu.core.db.HibernateUtil.buildSessionFactory(HibernateUtil.java:60)
      at pappu.core.db.HibernateUtil.initSessionFactory(HibernateUtil.java:98)
      at pappu.core.db.HibernateUtil.getSessionFactory(HibernateUtil.java:70)
      at pappu.core.db.HibernateUtil.getCurrentSession(HibernateUtil.java:82)
      at pappu.Main.start(Main.java:23)
      at com.sun.javafx.application.LauncherImpl$5.run(Unknown Source)
      at com.sun.javafx.application.PlatformImpl$5.run(Unknown Source)
      at com.sun.javafx.application.PlatformImpl$4$1.run(Unknown Source)
      at com.sun.javafx.application.PlatformImpl$4$1.run(Unknown Source)
      at java.security.AccessController.doPrivileged(Native Method)
      at com.sun.javafx.application.PlatformImpl$4.run(Unknown Source)
      at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
      at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
      at com.sun.glass.ui.win.WinApplication.access$100(Unknown Source)
      at com.sun.glass.ui.win.WinApplication$3$1.run(Unknown Source)
      ... 1 more
  Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.connections.spi.ConnectionProvider]
      at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:233)
      at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:197)
      at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:178)
      at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.buildJdbcConnectionAccess(JdbcServicesImpl.java:260)
      at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:94)
      at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:89)
      at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:206)
      at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:178)
      at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1885)
      at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1843)
      at pappu.core.db.HibernateUtil.buildSessionFactory(HibernateUtil.java:56)
      ... 15 more
  Caused by: org.hibernate.HibernateException: Could not instantiate connection provider [org.jasypt.hibernate.connectionprovider.EncryptedPasswordDriverManagerConnectionProvider]
      at org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiator.instantiateExplicitConnectionProvider(ConnectionProviderInitiator.java:197)
      at org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiator.initiateService(ConnectionProviderInitiator.java:120)
      at org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiator.initiateService(ConnectionProviderInitiator.java:55)
      at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:83)
      at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:223)
      ... 25 more
  Caused by: org.hibernate.boot.registry.selector.spi.StrategySelectionException: Unable to resolve name [org.jasypt.hibernate.connectionprovider.EncryptedPasswordDriverManagerConnectionProvider] as strategy [org.hibernate.engine.jdbc.connections.spi.ConnectionProvider]
      at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.selectStrategyImplementor(StrategySelectorImpl.java:128)
      at org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiator.instantiateExplicitConnectionProvider(ConnectionProviderInitiator.java:194)
      ... 29 more
  </code></pre>
  
  <p><br />
  <br />
  jasypt-1.9.2.jar and jasypt-hibernate4-1.9.2.jar are correctly included in the class path.
  <br />
  There is something weird, in <a href="http://www.jasypt.org/hibernate.html" rel="nofollow">the tutorial provided by jasypt</a>, they use this property in their <strong>hibernate.cfg.xml</strong> :</p>
  
  <pre><code>&lt;property name="connection.provider_class"&gt;
        org.jasypt.hibernate4.connectionprovider.EncryptedPasswordDriverManagerConnectionProvider
  &lt;/property&gt;
  </code></pre>
  
  <p>You can see the difference with my <strong>hibernate.cfg.xml</strong> at the line 8, I'm using </p>
  
  <pre><code>org.jasypt.hibernate.connectionprovider.EncryptedPasswordDriverManagerConnectionProvider
  </code></pre>
  
  <p>If I use the "org.jasypt.hibernate4.connectionprovider...." I get these errors :
  <br /></p>
  
  <pre><code>juin 17, 2014 12:44:43 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager &lt;clinit&gt;
  INFO: HCANN000001: Hibernate Commons Annotations {4.0.4.Final}
  juin 17, 2014 12:44:43 PM org.hibernate.Version logVersion
  INFO: HHH000412: Hibernate Core {4.3.2.Final}
  juin 17, 2014 12:44:43 PM org.hibernate.cfg.Environment &lt;clinit&gt;
  INFO: HHH000206: hibernate.properties not found
  juin 17, 2014 12:44:43 PM org.hibernate.cfg.Environment buildBytecodeProvider
  INFO: HHH000021: Bytecode provider name : javassist
  juin 17, 2014 12:44:43 PM org.hibernate.cfg.Configuration configure
  INFO: HHH000043: Configuring from resource: /pappu/config/hibernate.cfg.xml
  juin 17, 2014 12:44:43 PM org.hibernate.cfg.Configuration getConfigurationInputStream
  INFO: HHH000040: Configuration resource: /pappu/config/hibernate.cfg.xml
  juin 17, 2014 12:44:43 PM org.hibernate.cfg.Configuration doConfigure
  INFO: HHH000041: Configured SessionFactory: null
  juin 17, 2014 12:44:43 PM org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiator instantiateExplicitConnectionProvider
  INFO: HHH000130: Instantiating explicit connection provider: org.jasypt.hibernate4.connectionprovider.EncryptedPasswordDriverManagerConnectionProvider
  Initial SessionFactory creation failed.java.lang.NoClassDefFoundError: org/hibernate/service/jdbc/connections/internal/DriverManagerConnectionProviderImpl
  Exception in Application start method
  Exception in thread "main" java.lang.RuntimeException: Exception in Application start method
      at com.sun.javafx.application.LauncherImpl.launchApplication1(Unknown Source)
      at com.sun.javafx.application.LauncherImpl.access$000(Unknown Source)
      at com.sun.javafx.application.LauncherImpl$1.run(Unknown Source)
      at java.lang.Thread.run(Unknown Source)
  Caused by: java.lang.ExceptionInInitializerError
      at pappu.core.db.HibernateUtil.buildSessionFactory(HibernateUtil.java:60)
      at pappu.core.db.HibernateUtil.initSessionFactory(HibernateUtil.java:98)
      at pappu.core.db.HibernateUtil.getSessionFactory(HibernateUtil.java:70)
      at pappu.core.db.HibernateUtil.getCurrentSession(HibernateUtil.java:82)
      at pappu.Main.start(Main.java:23)
      at com.sun.javafx.application.LauncherImpl$5.run(Unknown Source)
      at com.sun.javafx.application.PlatformImpl$5.run(Unknown Source)
      at com.sun.javafx.application.PlatformImpl$4$1.run(Unknown Source)
      at com.sun.javafx.application.PlatformImpl$4$1.run(Unknown Source)
      at java.security.AccessController.doPrivileged(Native Method)
      at com.sun.javafx.application.PlatformImpl$4.run(Unknown Source)
      at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
      at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
      at com.sun.glass.ui.win.WinApplication.access$100(Unknown Source)
      at com.sun.glass.ui.win.WinApplication$3$1.run(Unknown Source)
      ... 1 more
  Caused by: java.lang.NoClassDefFoundError: org/hibernate/service/jdbc/connections/internal/DriverManagerConnectionProviderImpl
      at java.lang.ClassLoader.defineClass1(Native Method)
      at java.lang.ClassLoader.defineClass(Unknown Source)
      at java.security.SecureClassLoader.defineClass(Unknown Source)
      at java.net.URLClassLoader.defineClass(Unknown Source)
      at java.net.URLClassLoader.access$100(Unknown Source)
      at java.net.URLClassLoader$1.run(Unknown Source)
      at java.net.URLClassLoader$1.run(Unknown Source)
      at java.security.AccessController.doPrivileged(Native Method)
      at java.net.URLClassLoader.findClass(Unknown Source)
      at java.lang.ClassLoader.loadClass(Unknown Source)
      at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
      at java.lang.ClassLoader.loadClass(Unknown Source)
      at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl$AggregatedClassLoader.findClass(ClassLoaderServiceImpl.java:222)
      at java.lang.ClassLoader.loadClass(Unknown Source)
      at java.lang.ClassLoader.loadClass(Unknown Source)
      at java.lang.Class.forName0(Native Method)
      at java.lang.Class.forName(Unknown Source)
      at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:240)
      at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.selectStrategyImplementor(StrategySelectorImpl.java:125)
      at org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiator.instantiateExplicitConnectionProvider(ConnectionProviderInitiator.java:194)
      at org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiator.initiateService(ConnectionProviderInitiator.java:120)
      at org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiator.initiateService(ConnectionProviderInitiator.java:55)
      at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:83)
      at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:223)
      at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:197)
      at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:178)
      at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.buildJdbcConnectionAccess(JdbcServicesImpl.java:260)
      at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:94)
      at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:89)
      at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:206)
      at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:178)
      at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1885)
      at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1843)
      at pappu.core.db.HibernateUtil.buildSessionFactory(HibernateUtil.java:56)
      ... 15 more
  Caused by: java.lang.ClassNotFoundException: org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl
      at java.net.URLClassLoader$1.run(Unknown Source)
      at java.net.URLClassLoader$1.run(Unknown Source)
      at java.security.AccessController.doPrivileged(Native Method)
      at java.net.URLClassLoader.findClass(Unknown Source)
      at java.lang.ClassLoader.loadClass(Unknown Source)
      at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
      at java.lang.ClassLoader.loadClass(Unknown Source)
      ... 49 more
  </code></pre>
  
  <p><br />
  <br />
  I'm totally lost because my <strong>HibernateUtil.java</strong> includes <strong>org.jasypt.hibernate4</strong> !</p>