JBOSS-如何在多数据库环境中设置默认数据源



我将项目从JBOSS EAP 6.4迁移到JBOSS EAP 7.2。

所以我遇到了这种错误,

   15:45:50,571 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("deploy") failed - address: ([("deployment" => "my.war")]) - failure description: {
    "WFLYCTL0412: Required services that are not installed:" => ["jboss.naming.context.java.module.DefaultDataSource"],
    "WFLYCTL0180: Services with missing/unavailable dependencies" => ["jboss.naming.context.java.module.dummy.env.myDS is missing [jboss.naming.context.java.module..DefaultDataSource]"]
}

我知道发生此错误是因为默认数据源未在stane.xml 中定义。在以前的Jboss EAP删除默认数据的版本中,没有给出这个问题。在此版本中,即使这些应用程序不需要该默认数据源,定义DefaultDataSource也是强制性的。

因此,我尝试将默认数据源作为已经存在的数据源提供。在这种语句中:

<default-bindings context-service="java:jboss/ee/concurrency/context/default" datasource="java:/jdbc/existing" /> 

这很好。

现在我的问题是我们的环境有多个数据库及其各自的数据源。因此,我们无法将特定数据源定义为默认值。因为这将干扰我们的应用规则流。并可以创建主要问题。

我们希望应用程序不使用其特定数据源。

但是JBOSS EAP 7迫使我们指定默认数据源。

因此我们可以定义虚拟默认数据源?还是还有其他替代方法?

默认datasource选项中存在默认绑定。

default-bindings context-service="java:jboss/ee/concurrency/context/default" datasource="java:jboss/jdbc/jndi-name" managed-executor-service="java:jboss/ee/concurrency/executor/default" managed-scheduled-executor-service="java:jboss/ee/concurrency/scheduler/default" managed-thread-factory="java:jboss/ee/concurrency/factory/default"/

适用于JBoss EAP 7.2Wildfly

修改独立的这一部分,以设置默认数据源

<?xml version="1.0" encoding="UTF-8"?>
<subsystem xmlns="urn:jboss:domain:datasources:3.0">
   <datasources>
      <datasource jta="true" jndi-name="java:jboss/datasources/default" pool-name="default" enabled="true" use-java-context="true" use-ccm="true" statistics-enabled="true">
         <connection-url>jdbc:mysql://localhost:3306/default?autoReconnect=true&amp;useSSL=false</connection-url>
         <driver>mysql</driver>
         <security>
            <user-name>user</user-name>
            <password>password</password>
         </security>
      </datasource>
      <drivers>
         <driver name="mysql" module="com.mysql">
            <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
         </driver>
      </drivers>
   </datasources>
</subsystem>

jboss/wildfly将作为默认数据源选择。

希望这对您有帮助:(

最新更新