OpenCms 8.5报Unknown resource type id 807及页面500错误咨询
OpenCms 8.5 报Unknown resource type id 807错误导致500的排查方案
错误信息
ERROR [ org.opencms.main.OpenCmsCore:1991] Unknown resource type id 807 requested.
该问题出现时,仅重新导入war包无法解决,站点关联页面会持续返回500状态码。
排查解决步骤
- 优先排查数据库残留数据:OpenCms的资源类型定义、资源关联关系全部持久化存储在数据库中,替换war包不会修改数据库内容。直接连接OpenCms使用的数据库,查询
cms_resource_types表是否存在id=807的资源类型记录:- 如果表中无该id记录,继续查询
cms_resources表是否有resource_type字段值为807的内容,这类记录基本是之前安装自定义模块、第三方插件卸载不干净残留的无效数据,直接清理这类无对应类型定义的资源记录即可。 - 如果表中存在该id记录,检查记录对应的模块路径、类路径是否存在,大概率是war包替换时删掉了自定义模块的文件,导致资源类型定义存在但实现类找不到。
- 如果表中无该id记录,继续查询
- 检查模块配置完整性:打开
WEB-INF/config/opencms-modules.xml配置文件,核对所有配置的模块是否在WEB-INF/packages/目录下存在对应安装包,进入OpenCms后台模块管理页面,查看是否有状态标红、加载失败的模块,尤其是自定义过资源类型的模块,重新上传对应适配OpenCms 8.5版本的模块安装包完成重装。 - 排查跨版本兼容问题:如果近期做过版本回退、导入过其他高版本OpenCms环境的数据库备份/内容包,高版本自定义的资源类型id为807的配置在8.5版本中不存在,就会触发该报错。OpenCms 8.5的自定义资源类型id合法区间为1000以上,800-999为系统预留区间,把跨版本导入的自定义资源类型id调整到合法区间,或者直接删除不兼容的跨版本导入内容即可。
- 清理全量缓存:停掉应用服务,删除
WEB-INF/work/下所有缓存文件,同时清理应用服务器(Tomcat/Jetty等)自身的work、temp临时目录,避免旧的资源类型缓存持久化导致配置更新后不生效,清理完成后再重启服务。 - 执行数据库一致性修复:进入OpenCms后台管理视图,找到数据库维护工具,执行全量资源引用一致性校验,工具会自动扫描所有无效的资源类型关联、断链引用,按照提示修复所有异常项后重启服务即可恢复页面访问。
内容的提问来源于stack exchange,提问作者Leslie Murungi
相关产品推荐
相关产品推荐

