Wildfly 35部署失败:缺失DefaultDataSource的解决办法咨询
问题描述
我们正将系统从旧版本JBoss升级至Wildfly,团队首次接触Wildfly。部署workflow.war时出现如下错误:
11:27:25,284 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("deploy ") failed - address: ([("deployment" => "workflow.war")]) - failure description: { "WFLYCTL0412: Required services that are not installed:" => ["jboss.naming.context.java.jdbc.workflow.myDataSource"], "WFLYCTL0180: Services with missing/unavailable dependencies" => ["service jboss.naming.context.java.module.workflow.workflow.DefaultDataSource is missing [jboss.naming.context.java.jdbc.workflow.myDataSource]"] }
当前standalone.xml的相关配置如下:
<datasources> <datasource jndi-name="java:/jdbc/workflow" pool-name="myDataSource" enabled="true" use-java-context="true" statistics-enabled="${wildfly.datasources.statistics-enabled:${wildfly.statistics-enabled:false}}"> <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;MODE=${wildfly.h2.compatibility.mode:REGULAR}</connection-url> <driver>h2</driver> <security user-name="xxxxxxx" password="xxxxxx"/> </datasource> <drivers> <driver name="h2" module="com.h2database.h2"> <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class> </driver> </drivers> </datasources> ... <default-bindings context-service="java:jboss/ee/concurrency/context/default" datasource="java:/jdbc/workflow/myDataSource" 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"/>
可行修复方案
修正default-bindings的数据源JNDI引用
当前default-bindings中配置的datasource值为java:/jdbc/workflow/myDataSource,但实际定义的数据源JNDI名称是java:/jdbc/workflow,两者不匹配。将default-bindings里的datasource属性值改为java:/jdbc/workflow,保持与数据源配置一致。调整数据源的JNDI名称以匹配引用
如果系统(包括war包内部)确实需要使用java:/jdbc/workflow/myDataSource作为数据源的JNDI名称,直接修改<datasource>标签的jndi-name属性为java:/jdbc/workflow/myDataSource,确保所有引用该数据源的地方名称统一。检查war包内部的数据源配置
查看workflow.war中的persistence.xml、jboss-web.xml或其他自定义配置文件,确认其中引用的数据源JNDI名称是否与standalone.xml中的配置一致,若存在不匹配的情况,调整为统一的名称。
内容的提问来源于stack exchange,提问作者ph_fcyaa
相关产品推荐
相关产品推荐

