You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OptaPlanner 8.25.0集成WildFly 23.0.2的正确方式咨询

问题分析与解决方案

1. 修复XML属性accessExternalDTD异常

WildFly 23自带的JAXP实现与OptaPlanner 8.x的XML处理逻辑存在冲突,导致抛出该异常。不建议强制指定com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl,应通过调整WildFly配置解决:

  • 打开WildFly安装目录下的standalone/configuration/standalone.xml(集群环境用domain.xml)
  • 在<subsystem xmlns="urn:jboss:domain:ee:5.0">节点内添加:
    <global-modules>
        <module name="javax.xml.bind.api" slot="main"/>
        <module name="com.sun.xml.bind" slot="main"/>
    </global-modules>
    
  • 同时在该subsystem下补充XML绑定配置:
    <default-bindings>
        <xml-binding-factory resource="META-INF/services/javax.xml.bind.JAXBContext"/>
    </default-bindings>
    

重启WildFly后,即可使用兼容的XML处理实现,避免后续依赖冲突。

2. 解决Drools相关包缺失问题

OptaPlanner 8.x重构了依赖结构,optaplanner-core不再默认包含Drools规则引擎依赖。若你的项目使用.drl文件定义约束,需显式引入对应依赖:

Maven配置

<dependency>
    <groupId>org.optaplanner</groupId>
    <artifactId>optaplanner-core</artifactId>
    <version>8.25.0.Final</version>
</dependency>
<!-- 引入Drools规则支持 -->
<dependency>
    <groupId>org.optaplanner</groupId>
    <artifactId>optaplanner-core-drools</artifactId>
    <version>8.25.0.Final</version>
</dependency>

Gradle配置

implementation 'org.optaplanner:optaplanner-core:8.25.0.Final'
// 引入Drools规则支持
implementation 'org.optaplanner:optaplanner-core-drools:8.25.0.Final'

3. 修复Constraint Streams依赖缺失异常

若项目通过ConstraintProviderClass使用Constraint Streams API,需引入对应的实现依赖,禁止直接引入optaplanner-core-impl(该包为内部实现,不对外提供API支持):

Maven配置

<dependency>
    <groupId>org.optaplanner</groupId>
    <artifactId>optaplanner-core</artifactId>
    <version>8.25.0.Final</version>
</dependency>
<!-- 引入Constraint Streams默认实现 -->
<dependency>
    <groupId>org.optaplanner</groupId>
    <artifactId>optaplanner-core-constraint-streams</artifactId>
    <version>8.25.0.Final</version>
</dependency>

Gradle配置

implementation 'org.optaplanner:optaplanner-core:8.25.0.Final'
// 引入Constraint Streams默认实现
implementation 'org.optaplanner:optaplanner-core-constraint-streams:8.25.0.Final'

完整集成步骤

  1. 删除手动设置的-Djavax.xml.parsers.DocumentBuilderFactory系统属性,按上述方法调整WildFly的EE子系统配置。
  2. 根据约束定义方式选择依赖组合:
    • 使用Constraint Streams:optaplanner-core + optaplanner-core-constraint-streams
    • 使用Drools规则:optaplanner-core + optaplanner-core-drools
  3. 重启WildFly,验证应用启动正常。

内容的提问来源于stack exchange,提问作者Peter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 13:00:56