如何将WildFly 27.0.1的JSF实现从Mojarra 4.0.0.SP01切换为MyFaces 4.0
WildFly 27.0.1 切换JSF实现至MyFaces 4.0 实操步骤
1. 确认目标模块存在
启动WildFly后,执行CLI命令检查服务器中是否已预装MyFaces 4.0模块:
./jboss-cli.sh --connect command="module list | grep myfaces"
如果输出包含org.apache.myfaces.jsf:4.0或类似条目,说明模块已存在,直接跳到步骤2;若为空,需手动添加模块(见步骤4)。
2. 使用正确的CLI命令修改默认实现
官方文档的命令缺少服务器连接参数,正确格式分两种:
- 交互模式:
./jboss-cli.sh --connect # 进入交互环境后执行 /subsystem=jsf/:write-attribute(name=default-jsf-impl-slot,value=myfaces-4.0) :reload - 非交互一键执行:
注意:./jboss-cli.sh --connect command="/subsystem=jsf/:write-attribute(name=default-jsf-impl-slot,value=myfaces-4.0);:reload"value需与实际模块的slot名称匹配,若模块slot是具体版本(如myfaces-4.0.0),需对应修改。
3. 验证配置生效
- 检查当前默认JSF实现:
./jboss-cli.sh --connect command="/subsystem=jsf/:read-attribute(name=default-jsf-impl-slot)" - 重启WildFly后,查看服务器启动日志,若出现
MyFaces相关初始化日志(如Starting Apache MyFaces),说明切换成功。
4. 手动添加MyFaces 4.0模块(若服务器未预装)
- 在WildFly的
modules/system/layers/base/org/apache/myfaces/jsf/目录下创建4.0子目录(对应slot名称)。 - 将MyFaces 4.0的核心jar包(
myfaces-api-4.0.x.jar、myfaces-impl-4.0.x.jar)放入该目录。 - 创建
module.xml文件,内容如下:<?xml version="1.0" encoding="UTF-8"?> <module xmlns="urn:jboss:module:1.9" name="org.apache.myfaces.jsf" slot="4.0"> <properties> <property name="jboss.api" value="private"/> </properties> <resources> <resource-root path="myfaces-api-4.0.0.jar"/> <resource-root path="myfaces-impl-4.0.0.jar"/> </resources> <dependencies> <module name="javax.api"/> <module name="javax.servlet.api"/> <module name="javax.el.api"/> <module name="javax.servlet.jsp.api"/> <module name="jakarta.faces.api" export="true"/> <module name="org.jboss.logging"/> </dependencies> </module> - 执行步骤2的命令完成切换。
5. 常见问题排查
- 命令提示找不到
subsystem=jsf:确认WildFly已正常启动,CLI连接参数正确(若服务器非本地,需加--controller=host:port)。 - 提示slot不存在:检查模块目录结构、slot名称是否与命令中的
value一致。 - 应用启动报错:确保应用war包中未自带JSF相关jar包,避免与服务器模块冲突。
内容的提问来源于stack exchange,提问作者NOTiFY
相关产品推荐
相关产品推荐

