GlassFish 7.0.11部署WAR包报错:UploadedFileCleanerListener不符合接口要求
GlassFish 7.0.11部署WAR包失败:UploadedFileCleanerListener监听器不兼容问题
问题场景
- 环境:GlassFish 7.0.11
- 操作:部署WAR包
sethma-3.0.0.war - 前置状态:domain1已成功启动,启动日志:
Waiting for domain1 to start ............ Waiting finished after 11,396 ms. Successfully started the domain : domain1 domain Location: C:\GLASSFISH_HOME\glassfish\domains\domain1 Log File: C:\GLASSFISH_HOME\glassfish\domains\domain1\logs\server.log Admin Port: 4,848 Command start-domain executed successfully.
- 部署命令:
C:\GLASSFISH_HOME\bin>asadmin deploy D:\hmis\target\sethma-3.0.0.war
错误日志
连续两次部署均失败,报错内容:
C:\GLASSFISH_HOME\bin>asadmin deploy D:\hmis\target\sethma-3.0.0.war remote failure: Error occurred during deployment: Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang.IllegalArgumentException: java.lang.IllegalArgumentException: Unable to add listener of type: org.primefaces.webapp.UploadedFileCleanerListener, because it does not implement any of the required ServletContextListener, ServletContextAttributeListener, ServletRequestListener, ServletRequestAttributeListener, HttpSessionListener, or HttpSessionAttributeListener interfaces. Please see server.log for more details. Command deploy failed. C:\GLASSFISH_HOME\bin>asadmin deploy D:\hmis\target\sethma-3.0.0.war remote failure: Error occurred during deployment: Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang.IllegalArgumentException: java.lang.IllegalArgumentException: Unable to add listener of type: org.primefaces.webapp.UploadedFileCleanerListener, because it does not implement any of the required ServletContextListener, ServletContextAttributeListener, ServletRequestListener, ServletRequestAttributeListener, HttpSessionListener, or HttpSessionAttributeListener interfaces. Please see server.log for more details. Command deploy failed.
问题根源
org.primefaces.webapp.UploadedFileCleanerListener 未实现Servlet规范要求的任一监听器接口,导致GlassFish容器无法识别并添加该监听器,最终部署失败。
解决方案
- 版本适配:GlassFish 7基于Jakarta EE 10,需使用PrimeFaces 12及以上版本(该版本适配Jakarta EE规范),旧版本PrimeFaces的监听器类基于旧Servlet API,存在接口不兼容问题。
- 调整监听器配置:
- 检查项目
web.xml,若手动配置了UploadedFileCleanerListener,直接注释或删除该配置条目,重新打包WAR包。 - 若依赖自动引入该监听器,排查Maven/Gradle依赖,排除低版本PrimeFaces,确保引入适配Jakarta EE的版本。
- 检查项目
- 清理容器缓存:删除
C:\GLASSFISH_HOME\glassfish\domains\domain1\osgi-cache和applications目录下的缓存文件,重启domain1后重新部署。
内容的提问来源于stack exchange,提问作者Mafabi Eric
相关产品推荐
相关产品推荐

