迁移至JBoss EAP 7.4.6后,Jakarta EE的JSF应用启动失败
JBoss EAP 7.3迁移至7.4.6启动报错排查
问题背景
基于JSF的UI应用在JBoss EAP 7.3上运行正常,迁移至JBoss EAP 7.4.6版本后,已按官方说明更新standalone.xml配置,但启动应用时出现依赖缺失错误。
报错日志
13:19:47,946 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("deploy") failed - address: (["deployment" => "web-2.20.1-jboss7.war"]) - failure description: { ** "WFLYCTL0412: Required services that are not installed:" => [ "org.wildfly.remoting.outbound-connection.remote-ejb-connection", "jboss.deployment.unit.\"web-2.20.1-jboss7.war\".WeldStartService", "jboss.deployment.unit.\"web-2.20.1-jboss7.war\".beanmanager" ],** "WFLYCTL0180: Services with missing/unavailable dependencies" => [ "jboss.deployment.unit.\"cweb-2.20.1-jboss7.war\".batch.artifact.factory is missing [jboss.deployment.unit.\"web-2.20.1-jboss7.war\".beanmanager]", "jboss.deployment.unit.\"cweb-2.20.1-jboss7.war\".weld.weldClassIntrospector is missing [jboss.deployment.unit.\"web-2.20.1-jboss7.war\".beanmanager, jboss.deployment.unit.\"web-2.20.1-jboss7.war\".WeldStartService]", "jboss.ejb3.ejbClientContext.deployment.\"web-2.20.1-jboss7.war\".internal-remoting-profile is missing [org.wildfly.remoting.outbound-connection.remote-ejb-connection]" ] 13:19:48,185 INFO [org.jboss.as.server] (ServerService Thread Pool -- 41) WFLYSRV0010: Deployed "web-2.20.1-jboss7.war" (runtime-name : "web-2.20.1-jboss7.war") 13:19:48,194 INFO [org.jboss.as.controller] (Controller Boot Thread) WFLYCTL0183: Service status report WFLYCTL0184: New missing/unsatisfied dependencies: service jboss.deployment.unit."web-2.20.1-jboss7.war".WeldStartService (missing) dependents: [service jboss.deployment.unit."web-2.20.1-jboss7.war".weld.weldClassIntrospector] service jboss.deployment.unit."web-2.20.1-jboss7.war".beanmanager (missing) dependents: [service jboss.deployment.unit."web-2.20.1-jboss7.war".batch.artifact.factory, service jboss.deployment.unit."web-2.20.1-jboss7.war".weld.weldClassIntrospector] service org.wildfly.remoting.outbound-connection.remote-ejb-connection (missing) dependents: [service jboss.ejb3.ejbClientContext.deployment."web-2.20.1-jboss7.war".internal-remoting-profile] WFLYCTL0448: 5 additional services are down due to their dependencies being missing or failed
已尝试操作
已在standalone.xml中添加如下出站Socket绑定,但问题未解决:
<outbound-socket-binding name="remote-ejb"> <remote-destination host="localhost" port="8380"/> </outbound-socket-binding>
解决步骤
1. 补全Remote EJB出站连接配置
错误提示缺失的org.wildfly.remoting.outbound-connection.remote-ejb-connection服务,仅配置出站Socket绑定不足,需在standalone.xml的remoting子系统中添加对应的出站连接:
<subsystem xmlns="urn:jboss:domain:remoting:5.0"> <!-- 保留原有配置 --> <outbound-connections> <!-- 若无需认证,可省略authentication-context属性 --> <outbound-connection name="remote-ejb-connection" outbound-socket-binding-ref="remote-ejb" authentication-context="ejb-auth-context"/> </outbound-connections> </subsystem>
注意:authentication-context需提前配置,若应用连接EJB服务无需认证,可直接去掉该属性。
2. 修复Weld/BeanManager依赖
WeldStartService和beanmanager缺失通常与CDI配置有关:
- 启用CDI场景:检查应用
WEB-INF/beans.xml是否存在,JBoss EAP 7.4对CDI启用规则更严格,即使空文件也需存在以触发CDI容器初始化。 - 禁用CDI场景:若应用无需CDI,可在应用的
WEB-INF/jboss-deployment-structure.xml中排除Weld子系统:
<jboss-deployment-structure> <deployment> <exclude-subsystems> <subsystem name="weld"/> </exclude-subsystems> </deployment> </jboss-deployment-structure>
3. 验证配置与端口
- 确认
remote-ejb绑定的port与目标EJB服务的远程监听端口一致(默认EJB远程端口为8080或8380,需根据实际环境调整)。 - 重启JBoss后,检查启动日志确认
remoting和CDI子系统已正常加载。
内容的提问来源于stack exchange,提问作者user3389133
相关产品推荐
相关产品推荐

