Java 与Wildfly一起使用多个数据源

Java 与Wildfly一起使用多个数据源,java,jdbc,jboss,datasource,wildfly,Java,Jdbc,Jboss,Datasource,Wildfly,我在java web应用程序中使用了多个数据源。 以下是Wildfly配置(独立模式): 使用显示的配置,我面临以下问题: 只有在我的standalone-full.xml的部分将数据源设置为默认值时,我才能访问该数据源。如果它是空的,我得到 “JBAS014771:缺少/不可用依赖项的服务” 指向部署期间bean中使用的数据源列表 如果我将DS1设置为默认值,那么下次注入DS2时,它将包含 LocalManagedConnectionFactory 指向dataSource.mcf变量中的DS

我在java web应用程序中使用了多个数据源。 以下是Wildfly配置(独立模式):

使用显示的配置,我面临以下问题:

  • 只有在我的standalone-full.xml的
    部分将数据源设置为默认值时,我才能访问该数据源。如果它是空的,我得到

    “JBAS014771:缺少/不可用依赖项的服务”

  • 指向部署期间bean中使用的数据源列表

  • 如果我将DS1设置为默认值,那么下次注入DS2时,它将包含

    LocalManagedConnectionFactory

  • 指向dataSource.mcf变量中的DS1

    正如我从这个话题中了解到的 此问题可能是由容器管理的持久性引起的

    但在给定的情况下,我没有使用任何ORM。因此,我只能使用jndi和服务器配置操作数据源

    那么,我有没有办法通过使用一些额外的wildfly配置/对应用程序的任何操作来解决这种情况,或者我必须自己使用ORM和管理持久性


    感谢您的回复。

    建议使用ORM(最好使用JPA),因此您将使用entityManager和persistene.xml来使用多个数据源

     <persistence-unit name="DB1_PU">
        <jta-data-source>java:jboss/datasources/ds1</jta-data-source>
    </persistence-unit>
    <persistence-unit name="DB2_PU">
        <jta-data-source>java:jboss/datasources/ds2</jta-data-source>
    </persistence-unit>
    

    建议使用ORM(最好使用JPA),因此您将使用entityManager和persistence.xml来使用多个数据源

     <persistence-unit name="DB1_PU">
        <jta-data-source>java:jboss/datasources/ds1</jta-data-source>
    </persistence-unit>
    <persistence-unit name="DB2_PU">
        <jta-data-source>java:jboss/datasources/ds2</jta-data-source>
    </persistence-unit>
    

    您的输入错误为:persistence.xml->persistence.xml您的输入错误为:persistence.xml->persistence.xml
    @Resource(name="DS1/DS2")
    private DataSource dataSource;
    
    ....
    
    Connection connection = dataSource.getConnection();
    
     <persistence-unit name="DB1_PU">
        <jta-data-source>java:jboss/datasources/ds1</jta-data-source>
    </persistence-unit>
    <persistence-unit name="DB2_PU">
        <jta-data-source>java:jboss/datasources/ds2</jta-data-source>
    </persistence-unit>
    
    @PersistenceContext(unitName = "DB1_PU")
    protected EntityManager entityManager1;
    
    @PersistenceContext(unitName = "DB2_PU")
    protected EntityManager entityManager2;