我正在将项目从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]"]
}
我知道发生此错误是因为 standalone.xml中未定义默认数据源。在以前的JBoss EAP版本中,删除DefaultDataSource并没有出现此问题。在此版本中,即使那些应用程序不需要该默认数据源,也必须定义DefaultDataSource。
因此,我尝试将默认数据源作为现有数据源提供。在这种陈述中:
<default-bindings context-service="java:jboss/ee/concurrency/context/default" datasource="java:/jdbc/existing" />
这很好。
现在我的问题是我们的环境有多个数据库及其各自的数据源。 因此,我们无法将特定的数据源定义为默认值。因为这会干扰我们的应用程序的正常运行。并可能造成重大问题。
我们希望应用程序仅使用其特定数据源,而不使用默认数据源。
但是JBoss EAP 7迫使我们指定默认数据源。
那么我们可以定义一个虚拟的默认数据源吗?还是有其他替代方法?
答案 0 :(得分:0)
同时适用于JBoss EAP 7.2
和Wildfly
:
修改standalone.xml的这一部分以设置默认数据源:
<?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&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会将其作为默认数据源。
希望这对您有所帮助:)
答案 1 :(得分:0)
默认数据源选项位于standalone.xml中的默认绑定中
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"/