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

如何在WildFly 35中设置默认ExpressionFactoryImpl为Glassfish实现

解决方案:强制WildFly使用Glassfish Expressly ExpressionFactory

WildFly 35基于Jakarta EE 10,默认EL实现为Glassfish Expressly,但Activiti自带的JUEL会通过类加载优先级覆盖容器实现。以下是几种可靠的修复方式:

方法1:通过部署结构配置强制依赖容器EL模块

在你的EAR/WAR包的META-INF/jboss-deployment-structure.xml中添加如下配置,明确指定优先使用WildFly提供的Glassfish Expressly模块,同时排除Activiti的JUEL模块:

<jboss-deployment-structure>
    <deployment>
        <dependencies>
            <module name="org.glassfish.expressly" export="true" />
        </dependencies>
        <exclusions>
            <module name="org.activiti.core.el.juel" />
        </exclusions>
    </deployment>
</jboss-deployment-structure>

方法2:排除Activiti自带的JUEL依赖

通过构建工具(Maven/Gradle)移除Activiti依赖中的JUEL模块,让应用直接使用容器提供的EL实现:

Maven配置示例

<dependency>
    <groupId>org.activiti</groupId>
    <artifactId>activiti-engine</artifactId>
    <version>你的Activiti版本号</version>
    <exclusions>
        <exclusion>
            <groupId>org.activiti.core</groupId>
            <artifactId>activiti-el</artifactId>
        </exclusion>
    </exclusions>
</dependency>

Gradle配置示例

implementation('org.activiti:activiti-engine:你的Activiti版本号') {
    exclude group: 'org.activiti.core', module: 'activiti-el'
}

方法3:通过系统属性全局指定ExpressionFactory

在WildFly启动参数中添加系统属性,强制全局使用Glassfish的ExpressionFactory实现:

-Djakarta.el.ExpressionFactory=org.glassfish.expressly.ExpressionFactoryImpl

你可以将该参数添加到WildFly的bin/standalone.conf(Linux)或bin/standalone.conf.bat(Windows)文件中,确保每次启动都生效。

验证生效

配置完成后重启WildFly,触发原异常场景,检查堆栈信息是否回到Glassfish Expressly的调用链(如出现org.glassfish.expressly.parser.AstValue.getTarget),即可确认配置生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 18:56:02