【问题标题】:I can not have two datasources configured JPA Spring XML WildFly我不能配置两个数据源 JPA Spring XML WildFly
【发布时间】:2017-07-08 06:41:37
【问题描述】:

xml 中的 Spring 配置

<jee:jndi-lookup id="datas1" expected-type="javax.sql.DataSource"
    jndi-name="java:/jndi1" />

<jee:jndi-lookup id="datas2" expected-type="javax.sql.DataSource" 
    jndi-name="java:/jndi2" />

<bean id="EntityM"
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="datas1" />
    <property name="packagesToScan" value="package.persistence.entity" />
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <property name="showSql" value="true" />
            <property name="generateDdl" value="false" />
            <property name="databasePlatform" value="org.hibernate.dialect.Oracle12cDialect" />
        </bean>
    </property>
</bean>

<bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="EntityM" />
</bean>

例外是:

上下文初始化失败:org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'springSessionJdbcOperations' defined in class path resource [org/springframework/session/jdbc/config/annotation/web/http/JdbcHttpSessionConfiguration.class]: Unsatisfied dependency expressed through method 'springSessionJdbcOperations' parameter 0: No qualifying bean of type [javax.sql.DataSource] is defined: expected single matching bean but found 2: datas1,datas2; nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [javax.sql.DataSource] is defined: expected single matching bean but found 2: datas1,jndi2.

我不能配置两个数据源,第一个数据源是实体管理器,第二个数据源是调用存储过程。

【问题讨论】:

    标签: java spring hibernate jpa wildfly


    【解决方案1】:

    JdbcSessionConfiguration 需要一个名为“dataSource”的“DataSource”类型的 bean。 如果找不到,spring 会尝试使用“DataSource”类型的 bean,而忽略名称。因为有两个这种类型的bean,所以抛出异常。

    解决方案: 重命名要与 EntityManager 一起使用的 DataSource bean 'datas1' 到 'dataSource'。

    Spring 应该能够创建 JdbcSessionConfiguration 并且您可以根据需要使用“datas2”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-22
      • 1970-01-01
      • 2021-06-22
      • 2015-07-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多