Hibernate 5.2.14& C3P0:C3P0使用驱动程序:URL为null:null(根本没有XML)

时间:2018-03-17 12:05:32

标签: java spring hibernate c3p0

我的HibernateConfiguration类:

@Configuration
@EnableTransactionManagement
@PropertySource({ "classpath:core.properties" })
@ComponentScan({ "com.test.core.domain" })
@EnableJpaRepositories(basePackages = "com.test.core.domain.dao")
public class HibernateConfiguration {
    private static Logger logger = Logger.getLogger(HibernateConfiguration.class);

    @Autowired private Environment env;

    @Bean
    public LocalSessionFactoryBean entityManagerFactory() {
        LocalSessionFactoryBean localSessionFactoryBean = new LocalSessionFactoryBean();
        localSessionFactoryBean.setDataSource(dataSource());
        localSessionFactoryBean.setPackagesToScan(new String[] { "com.test.core.domain.*" });
        localSessionFactoryBean.setHibernateProperties(additionalProperties());
        return localSessionFactoryBean;
    }

    @Bean
    public DataSource dataSource() {
        ComboPooledDataSource сomboPooledDataSource = new ComboPooledDataSource();
        try {
            сomboPooledDataSource.setDriverClass(Preconditions.checkNotNull(env.getProperty("jdbc.driverClassName")));
        } catch( PropertyVetoException pve ){
            logger.error("Cannot load datasource driver (" + env.getProperty("jdbc.driverClassName") +"): " + pve.getMessage());
            return null;
        }

        сomboPooledDataSource.setJdbcUrl(Preconditions.checkNotNull(env.getProperty("jdbc.url")));
        сomboPooledDataSource.setUser(Preconditions.checkNotNull(env.getProperty("edrive.jdbc.user")));
        сomboPooledDataSource.setPassword(Preconditions.checkNotNull(env.getProperty("edrive.jdbc.pass")));

        сomboPooledDataSource.setMinPoolSize(20);
        сomboPooledDataSource.setMaxPoolSize(50);
        сomboPooledDataSource.setCheckoutTimeout(15);
        сomboPooledDataSource.setMaxStatements(0);
        сomboPooledDataSource.setIdleConnectionTestPeriod(30);

        return сomboPooledDataSource;
    }

    @Bean
    public PlatformTransactionManager transactionManager(EntityManagerFactory emf){
        JpaTransactionManager transactionManager = new JpaTransactionManager();
        transactionManager.setEntityManagerFactory(emf);

        return transactionManager;
    }

    @Bean
    public PersistenceExceptionTranslationPostProcessor exceptionTranslation(){
        return new PersistenceExceptionTranslationPostProcessor();
    }

    private Properties additionalProperties() {
        Properties properties = new Properties();
        properties.setProperty("hibernate.dialect", "org.hibernate.dialect.PostgreSQL95Dialect");
        properties.setProperty("hibernate.bytecode.use_reflection_optimizer", "true");
        properties.setProperty("hibernate.show_sql", "false");
        properties.setProperty("hibernate.default_batch_fetch_size", "1000");
        properties.setProperty("hibernate.max_fetch_depth", "2");
        properties.setProperty("hibernate.generate_statistics", "false");
        properties.setProperty("hibernate.default_schema", "EDRIVE");

        properties.setProperty("hibernate.connection.CharSet", "utf8");
        properties.setProperty("hibernate.connection.characterEncoding", "utf8");
        properties.setProperty("hibernate.connection.useUnicode", "true");
        properties.setProperty("hibernate.connection.provider_class", "org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider");
        properties.setProperty("hibernate.connection.release_mode", "after_transaction");

        properties.setProperty("hibernate.jdbc.batch_size", "50");
        properties.setProperty("hibernate.jdbc.fetch_size", "500");
        properties.setProperty("hibernate.jdbc.use_scrollable_resultset", "false");

        properties.setProperty("hibernate.cache.region.factory_class", "org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory");
        properties.setProperty("hibernate.cache.use_query_cache", "true");
        properties.setProperty("hibernate.cache.use_second_level_cache", "true");
        properties.setProperty("hibernate.cache.use_structured_entries", "false");

        properties.setProperty("hibernate.current_session_context_class", "thread");

        return properties;
    }
}

属性文件:

jdbc.driverClassName=org.postgresql.Driver
jdbc.url=jdbc:postgresql://www:5434/edrived1

edrive.jdbc.user=services
edrive.jdbc.pass=*********

当我启动我的网络应用程序时,我在日志中收到以下消息和异常:

  

2018-03-17 13:59:34 INFO C3P0ConnectionProvider:117 - HHH010002:C3P0   在URL上使用driver:null:null 2018-03-17 13:59:34 INFO   C3P0ConnectionProvider:118 - HHH10001001:连接属性:   {useUnicode = true,handling_mode = DELAYED_ACQUISITION_AND_HOLD,   CharSet = utf8,characterEncoding = utf8,release_mode = after_transaction}   2018-03-17 13:59:34 INFO C3P0ConnectionProvider:121 - HHH10001003:   自动提交模式:假2018-03-17 13:59:34警告   C3P0ConnectionProvider:124 - HHH10001006:没有JDBC驱动程序类   由属性hibernate.connection.driver_class

指定

...

  

2018-03-17 13:59:34 DEBUG BasicResourcePool:207 - 一个例外   在获得可用资源时发生了将重试。   java.sql.SQLException:没有合适的驱动程序   java.sql.DriverManager.getDriver(DriverManager.java:315)at   com.mchange.v2.c3p0.DriverManagerDataSource.driver(DriverManagerDataSource.java:285)     在   com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:161)     在   com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:161)     在   com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:147)     在   com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool $ 1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:202)     在   com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1138)     在   com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1125)     在   com.mchange.v2.resourcepool.BasicResourcePool.access $ 700(BasicResourcePool.java:44)at at   com.mchange.v2.resourcepool.BasicResourcePool $ ScatteredAcquireTask.run(BasicResourcePool.java:1870)     在   com.mchange.v2.async.ThreadPoolAsynchronousRunner $ PoolThread.run(ThreadPoolAsynchronousRunner.java:696)

这是bean的配置日志:

  

2018-03-17 14:09:50 DEBUG PropertySourcesPropertyResolver:115 - 找到   key' jdbc.driverClassName'在PropertySource'类路径资源中   [core.properties]'值类型为String 2018-03-17 14:09:50 DEBUG   JndiTemplate:154 - 用名字查找JNDI对象   [java:comp / env / jdbc.url] 2018-03-17 14:09:50 DEBUG   JndiLocatorDelegate:102 - 转换的JNDI名称[java:comp / env / jdbc.url]   找不到 - 尝试原始名称[jdbc.url]。   javax.naming.NameNotFoundException:名称[jdbc.url]未绑定   这个背景。无法找到[jdbc.url]。 2018-03-17 14:09:50 DEBUG   JndiTemplate:154 - 查找名称为[jdbc.url]的JNDI对象   2018-03-17 14:09:50 DEBUG JndiPropertySource:101 - JNDI查找   name [jdbc.url]使用消息抛出NamingException:Name [jdbc.url] is   不受此上下文约束。无法找到[jdbc.url] ..返回null。   2018-03-17 14:09:50 DEBUG PropertySourcesPropertyResolver:115 - 发现   key' jdbc.url'在PropertySource'类路径资源中   [core.properties]'值类型为String 2018-03-17 14:09:50 DEBUG   JndiTemplate:154 - 用名字查找JNDI对象   [java:comp / env / edrive.jdbc.user] 2018-03-17 14:09:50 DEBUG   JndiLocatorDelegate:102 - 转换的JNDI名称   找不到[java:comp / env / edrive.jdbc.user] - 尝试原始名称   [edrive.jdbc.user]。 javax.naming.NameNotFoundException:名称   [edrive.jdbc.user]未绑定在此Context中。无法找到   [edrive.jdbc.user]。 2018-03-17 14:09:50 DEBUG JndiTemplate:154 -   查找名称为[edrive.jdbc.user] 2018-03-17的JNDI对象   14:09:50 DEBUG JndiPropertySource:101 - JNDI查找名称   [edrive.jdbc.user]使用消息:Name抛出NamingException   [edrive.jdbc.user]未绑定在此Context中。无法找到   [edrive.jdbc.user] ..返回null。 2018-03-17 14:09:50 DEBUG   PropertySourcesPropertyResolver:115 - 找到关键' edrive.jdbc.user'在   PropertySource'类路径资源[core.properties]'价值   type String 2018-03-17 14:09:50 DEBUG JndiTemplate:154 - 向上看   名称为[java:comp / env / edrive.jdbc.pass]的JNDI对象2018-03-17   14:09:50 DEBUG JndiLocatorDelegate:102 - 转换JNDI名称   找不到[java:comp / env / edrive.jdbc.pass] - 尝试原始名称   [edrive.jdbc.pass]。 javax.naming.NameNotFoundException:名称   [edrive.jdbc.pass]未绑定在此Context中。无法找到   [edrive.jdbc.pass]。 2018-03-17 14:09:50 DEBUG JndiTemplate:154 -   查找名称为[edrive.jdbc.pass]的JNDI对象2018-03-17   14:09:50 DEBUG JndiPropertySource:101 - JNDI查找名称   [edrive.jdbc.pass]使用消息:Name抛出NamingException   [edrive.jdbc.pass]未绑定在此Context中。无法找到   [edrive.jdbc.pass] ..返回null。 2018-03-17 14:09:50 DEBUG   PropertySourcesPropertyResolver:115 - 找到密钥' edrive.jdbc.pass'在   PropertySource'类路径资源[core.properties]'价值   type String 2018-03-17 14:09:50 DEBUG DefaultListableBeanFactory:573 -   急切地缓存bean&data;数据源'允许解决潜力   循环引用

所有属性都在相应的core.properties文件中设置,数据库处于活动状态,并且可以正常使用Hibernate 5.1和XML配置。现在我想迁移到Spring Boot 2,因此,我需要将配置转换为无XML的东西。我当前的实施出了什么问题?

0 个答案:

没有答案