Java hibernate4.1+;spring3.2+;博内克

Java hibernate4.1+;spring3.2+;博内克,java,spring,hibernate,connection-pooling,bonecp,Java,Spring,Hibernate,Connection Pooling,Bonecp,应用程序上下文看起来像 <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <property name="packagesToScan" value="com.some.domain.to.scan" /> <property name="hibernateProperties"> <

应用程序上下文看起来像

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="packagesToScan" value="com.some.domain.to.scan" /> 
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.connection.driver_class">oracle.jdbc.pool.OracleConnectionPoolDataSource</prop>
            <prop key="hibernate.connection.url">${url}</prop>
            <prop key="hibernate.connection.username">${username}</prop>
            <prop key="hibernate.connection.password">${password}</prop>
            <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
            <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
            <prop key="hibernate.hbm2ddl.auto">false</prop>
            <prop key="hibernate.cache.use_second_level_cache">${hibernate.l2_cache.enabled}</prop>
            <prop key="hibernate.cache.use_query_cache">${hibernate.l2_cache.enabled}</prop>
            <prop key="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</prop>
            <prop key="hibernate.cache.provider_configuration_file_resource_path">/settings/ehcache-hibernate-settings.xml</prop>
            <prop key="net.sf.ehcache.configurationResourceName">/settings/ehcache-hibernate-settings.xml</prop>
            <prop key="hibernate.connection.provider_class">com.jolbox.bonecp.provider.BoneCPConnectionProvider</prop>
            <prop key="bonecp.idleMaxAge">240</prop>
            <prop key="bonecp.idleConnectionTestPeriod">60</prop>
            <prop key="bonecp.partitionCount">2</prop>
            <prop key="bonecp.acquireIncrement">5</prop>
            <prop key="bonecp.maxConnectionsPerPartition">20</prop>
            <prop key="bonecp.minConnectionsPerPartition">10</prop>
            <prop key="bonecp.statementsCacheSize">50</prop>
            <prop key="bonecp.releaseHelperThreads">2</prop>
        </props>
    </property>
</bean>

<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
    <qualifier value="dbdomain"/>
</bean>
关于如何正确设置bonecp的任何帮助都会很有帮助

更新

在使用bonecp解决so依赖性问题后,我得到一个新错误,如下所示:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined in class path resource [app/applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.service.UnknownUnwrapTypeException: Cannot unwrap to requested type [javax.sql.DataSource]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1486)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:524)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:607)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:383)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283)
对应用程序上下文也做了一些小的更改,但我相信它们与我遇到的错误无关

变化是

<prop key="bonecp.idleMaxAge">240</prop>
<prop key="bonecp.idleConnectionTestPeriod">60</prop>
240
60

5
3.

此类已移动到以下程序包中:

org.hibernate.engine.jdbc.connections.spi
如果使用Maven,请运行以下命令:

mvn dependency:tree
并检查项目中有多少hibernate核心版本。您可能希望从spring依赖项声明中排除hibernate依赖项

您的问题就是由此引起的

因此,您需要更新到BoneCP0.80


对于XADataSource展开异常,您应该尝试。

BoneCP版本需要与Hibernate版本匹配,另请参见我在hibernate 4.1.12中使用bonecp 0.8.0.RELEASE只是为了澄清:hibernate.connection.provider_类已移动到org.hibernate.engine.jdbc.connections.spi?同样,对于hibernate核心版本,我只有4.1.12.Final我运行了“gradle dependencies”| grep hibernate core“get”+--org.hibernate:hibernate core:4.1.12.Final+--org.hibernate:hibernate core:4.1.12.Final+--org.hibernate:hibernate core:4.1.12.Final+--org.hibernate:hibernate core:4.1.12.Final+--org.hibernate:hibernate core:4.1.12.Final()+--org.hibernate:hibernate core:4.1.12.Final | \--org.hibernate:hibernate core:4.1.12.Final()@abroy通过相关文档验证,带有BoneCP提供程序JAR的BoneCP 0.8.0版本应与hibernate 4.1兼容。BoneCP provider source is和Hibernate 4.1 ApiDocs for
ConnectionProvider
is@vanOekel我的依赖关系树中似乎也有bonecp0.7.1.RELEASE,但清除了它们。现在只有0.8.0,这是在我再次运行服务器时说的,这次我得到了一个不同的错误,因为“上下文初始化失败org.springframework.beans.factory.BeanCreationException:创建名为“transactionManager”的bean时出错,该bean在类路径资源[app/applicationContext.xml]中定义:调用init方法失败;嵌套异常为org.hibernate.service.UnknownUnwrapTypeException:无法展开为请求的类型[javax.sql.DataSource]@vladmilcea关于展开异常,我不确定您指向我的解决方案是否是实际问题,尽管如此,我还是按照提供的解决方案更改为com.some.domain.to.scan/list>。但仍然得到同样的错误
org.hibernate.engine.jdbc.connections.spi
mvn dependency:tree