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

WildFly部署EAR应用访问时返回403 Forbidden错误排查

核心故障原因

三个常见配置错误共同导致了这个403问题:

  • WEB-INF目录是Java Web规范定义的强制受保护目录,应用服务器会直接拦截所有指向该目录的外部请求,永远不会把目录内的文件返回给客户端。你把index.html和关联静态资源放到这个目录下,相当于主动把对外提供的页面锁到了服务器禁止外部访问的区域,自然会出现和文件缺失完全一致的403表现,你之前参考的WebLogic相关方案存在理解偏差,没有任何标准部署方案会要求把对外访问的欢迎页放到WEB-INF目录下。
  • Maven打包配置存在逻辑冲突:你在WAR包构建流程中额外绑定了maven-assembly-plugin执行可执行分发包打包,这个插件的设计目标是构建可执行Jar、自定义归档包,和Java EE容器部署用的WAR包构建逻辑完全不兼容,会干扰maven-war-plugin的正常文件拷贝逻辑,很容易出现最终生成的WAR包内文件结构和你本地目录不一致的问题。
  • 静态资源存放位置不符合Maven WAR项目规范:标准Maven WAR项目的对外可访问根路径是src/main/webapp,所有需要用户直接访问的静态资源(html、css、js、图片等)都应该放在这个目录或其子目录下;WEB-INF是src/main/webapp下的专用子目录,仅用来存放不对外暴露的web.xml配置、依赖Jar包、编译后的Class文件。
可落地修复步骤
  1. 调整项目目录结构
    • 把你之前移到WEB-INF目录下的index.html和所有关联静态资源,全部移动到src/main/webapp目录的根路径下,最终的本地文件结构要保证src/main/webapp/index.html和src/main/webapp/WEB-INF/web.xml是同级关系,不存在包含关系
    • 检查WEB-INF目录内容,只保留web.xml、lib依赖目录、classes编译输出目录三类内容,不要放任何需要对外访问的资源
  2. 修正pom.xml配置
    • 直接删除maven-assembly-plugin的全部配置段。你是把WAR包部署到WildFly容器中运行,不需要指定mainClass打可执行包,这段配置完全多余,还会干扰正常打包流程
    • 你当前配置的<resources>节点仅扫描了src/main/java目录,只要目录结构符合Maven标准规范,不需要额外配置resources段,maven-war-plugin会自动把src/main/webapp下的所有文件按正确结构打包到WAR包中
  3. 彻底清理旧部署缓存后重新发布
    • 在Eclipse的Servers视图中移除之前部署的该应用,停止WildFly服务器
    • 进入WildFly安装目录的standalone/deployments路径,删除所有和你项目同名的WAR包、.deployed、.failed、.dodeploy标记文件
    • 清空Eclipse中对应WildFly运行时的临时工作目录(一般在Eclipse工作空间下的Servers目录对应服务器配置的work文件夹中)
    • 执行mvn clean package命令重新构建,解压生成的WAR包确认根目录下直接存在index.html文件后,再重新部署到WildFly
  4. 兜底排查项
    • 确认访问路径正确:如果没有把应用配置为根上下文,访问时需要带上部署的项目名,例如http://localhost:8080/IdeaProjectsImport/
    • 查看WildFly的standalone/log/server.log运行日志,确认403的触发原因:如果开启了默认安全域约束,未授权用户访问被拦截路径也会返回403,这种情况需要调整web.xml或WildFly的安全配置,放开对应路径的匿名访问权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 10:21:20