2

我在我的应用程序中使用 spring 3 和 hibernate 3.x 和 mule 3.x。我的配置文件是

<spring:bean id="sessionFactory"
            class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
            <spring:property name="dataSource" ref="dataSource" />
            <spring:property name="packagesToScan" value="${hibernate.packagesToScan}" />
            <spring:property name="eventListeners">
                <spring:map>
                    <spring:entry key="pre-insert">
                        <spring:bean
                            class="com.myapp.listener.PreInsertOrUpdateEventListener"
                            id="preInsertOrUpdateEventListener" />
                    </spring:entry>
                    <spring:entry key="pre-update">
                        <spring:bean
                            class="com.myapp.listener.PreInsertOrUpdateEventListener"
                            id="preInsertOrUpdateEventListener" />
                    </spring:entry>
                </spring:map>
            </spring:property>
            <spring:property name="hibernateProperties">
                <spring:props>
                    <spring:prop key="hibernate.dialect">${hibernate.dialect}</spring:prop>
                    <spring:prop key="hibernate.show_sql">${hibernate.show_sql}</spring:prop>
                    <spring:prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}
                    </spring:prop>
                    <spring:prop key="hibernate.temp.use_jdbc_metadata_defaults">${hibernate.temp.use_jdbc_metadata_defaults}
                    </spring:prop>
                    <spring:prop key="hibernate.connection.provider_class">${hibernate.connection.provider_class}
                    </spring:prop>
                    <spring:prop key="hibernate.dbcp.initialSize">${hibernate.dbcp.initialSize}
                    </spring:prop>
                    <spring:prop key="hibernate.dbcp.maxActive">${hibernate.dbcp.maxActive}
                    </spring:prop>
                    <spring:prop key="hibernate.dbcp.maxIdle">${hibernate.dbcp.maxIdle}
                    </spring:prop>
                    <spring:prop key="hibernate.dbcp.minIdle">${hibernate.dbcp.minIdle}
                    </spring:prop>
                </spring:props>
            </spring:property>
        </spring:bean>

<spring:bean id="dataSource" name="dataSource"
            class="org.apache.commons.dbcp.BasicDataSource">
            <spring:property name="driverClassName" value="${db.driverClassName}" />
            <spring:property name="url" value="${db.url}" />
            <spring:property name="username" value="${db.username}" />
            <spring:property name="password" value="${db.password}" />
        </spring:bean>

我想调用我的自定义连接提供程序类进行连接池,但它没有被调用。谁能告诉我是什么问题..

谢谢你。

4

1 回答 1

1

AnnotationSessionFactoryBeanLocalSessionFactoryBean用提供的弹簧替换连接提供者LocalDataSourceConnectionProvider。所以要么你必须使用它,要么LocalSessionFactoryBean通过扩展它来创建你自己的定制。

检查LocalSessionFactoryBean源代码以查看其设置connectionProvider值的方式。

希望能帮助到你。我也在寻找一个好的解决方案。

于 2013-04-30T12:59:14.080 回答