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

Liferay 7.1至7.4迁移:含Spring的Hook部署异常求助

解决Liferay 7.4部署时Hook/Portlet监听器冲突问题

问题原因

你的WAR包同时包含Hook和Portlet的标识配置,导致Liferay自动部署时无法确定应用类型,同时触发了HookAutoDeployListener和PortletAutoDeployListener。

解决步骤

  • 移除冗余的Portlet配置文件:如果你的应用核心是原Hook功能,删除项目中的portlet.xml、liferay-portlet.xml、liferay-display.xml等Portlet相关配置文件,避免触发Portlet部署逻辑。
  • 迁移传统Hook到OSGi扩展机制:Liferay 7.x及以后版本已废弃传统Hook,建议用OSGi组件替代对应功能:
    • 自定义登录/注销逻辑:实现PortalLifecycleListener接口,通过@Component注解注册为OSGi服务
    • JSP覆盖:在模块的bnd.bnd中配置JSP-Override路径,或者使用JSPBundleProcessor组件
    • 服务扩展:通过@Component注解指定service属性覆盖原有服务,并设置service.ranking优先级
  • 清理不必要的依赖:检查项目依赖,移除liferay-portlet-api等非必需的Portlet相关依赖,减少Liferay对应用类型的误判。
  • 强制指定插件类型(临时方案):在liferay-plugin-package.properties中添加plugin-type=hook,强制Liferay按Hook类型处理应用,但这只是临时兼容方案,建议尽快完成OSGi迁移。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 18:45:59