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

如何修改JAR包使WildFly 26中jboss.xml配置生效?

解决WildFly 26中EJB2 jboss.xml配置不生效的问题

针对你遇到的EJB2规范JAR包部署到WildFly 26后jboss.xml配置失效、添加<jndi-name>报错的问题,可通过以下步骤修复:

  • 修正jboss.xml的命名空间
    旧版JBoss EJB2的jboss.xml默认命名空间无法被WildFly 26识别,需替换为兼容的WildFly EJB2命名空间。修改jboss.xml根元素:

    <jboss xmlns="http://www.jboss.com/xml/ns/javaee"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee http://www.jboss.org/j2ee/schema/jboss_5_1.xsd"
           version="5.1">
        <!-- 原jboss.xml配置内容 -->
    </jboss>
    

    WildFly保留了对JBoss 5.x风格EJB2部署描述符的兼容,指定该命名空间后容器会正确解析jboss.xml中的配置。

  • 关闭EJB子系统的严格校验模式
    WildFly默认的EJB3严格校验会干扰EJB2描述符的处理,需修改服务器配置文件(standalone.xml或domain.xml)中的EJB子系统:

    <subsystem xmlns="urn:jboss:domain:ejb3:19.0">
        <strict-mode>false</strict-mode>
        <!-- 保留其他原有配置项 -->
    </subsystem>
    

    关闭严格模式后,容器会放宽对XML描述符的校验规则,避免因混合EJB2/EJB3元素触发错误。

  • 避免在标准描述符中混用EJB2特定元素
    报错提示的{http://java.sun.com/xml/ns/javaee}jndi-name是因为<jndi-name>是JBoss EJB2专属配置,只能放在jboss.xml中,不能添加到标准ejb-jar.xml(JavaEE标准命名空间)或jboss-ejb3.xml(EJB3风格描述符)内,否则会触发XML校验错误。

  • 保持ejb-jar.xml的EJB2规范属性
    确保ejb-jar.xml仍使用EJB2的DTD或命名空间,不要升级到EJB3+版本,否则WildFly会按EJB3部署逻辑处理,忽略EJB2的jboss.xml配置。示例:

    <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN"
                              "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
    <ejb-jar>
        <!-- 原EJB2配置内容 -->
    </ejb-jar>
    
  • 验证配置生效状态
    部署完成后,可通过WildFly CLI命令查看JNDI绑定情况,确认jboss.xml中的配置是否生效:

    /subsystem=naming/binding=java:global/[你的EAR名称]/[你的EJB模块名称]/[Bean类名]:read-resource
    

    也可通过管理控制台的「JNDI View」功能查看绑定结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 09:02:29