Skip to content

Update omnifaces to version 5.2.3#6995

Closed
henning-gerhardt wants to merge 1 commit intokitodo:mainfrom
slub:update_omnipages
Closed

Update omnifaces to version 5.2.3#6995
henning-gerhardt wants to merge 1 commit intokitodo:mainfrom
slub:update_omnipages

Conversation

@henning-gerhardt
Copy link
Copy Markdown
Collaborator

@henning-gerhardt henning-gerhardt commented Apr 17, 2026

Updating to latest release of omnifaces.

Changes needed as

  • org.omnifaces.filter.GzipResponseFilter was deprecated and must be replaces with org.omnifaces.filter.CompressedResponseFilter
  • Used namespace inside the *.xhtml files should be replaced (marked as deprecated in 5.x) from URI to URN and the different namespaces are merged.

@codacy-production
Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

🟢 Metrics 0 complexity · 0 duplication

Metric Results
Complexity 0
Duplication 0

View in Codacy

TIP This summary will be updated as you push new changes. Give us feedback

@henning-gerhardt henning-gerhardt marked this pull request as draft April 17, 2026 07:34
@henning-gerhardt
Copy link
Copy Markdown
Collaborator Author

Setting state of pull request to draft as I get 2 exceptions logged on closing the meta data editor at least:

First exception:

SEVERE [http-nio-8080-exec-10] org.omnifaces.exceptionhandler.FullAjaxExceptionHandler.logException [584272a6-2d26-4a49-9154-94a6a7b465d8][127.0.0.1] FullAjaxExceptionHandler: An exception occurred during processing Faces ajax request. Error page '/pages/error' will be shown.
	java.lang.NullPointerException: Cannot invoke "jakarta.faces.component.UIViewRoot.getViewId()" because "view" is null
		at org.omnifaces.viewhandler.OmniViewHandler.restoreViewRootState(OmniViewHandler.java:224)
		at org.omnifaces.viewhandler.OmniViewHandler.performPendingViewStateRemovals(OmniViewHandler.java:278)
		at org.omnifaces.viewhandler.OmniViewHandler.createView(OmniViewHandler.java:125)
		at jakarta.faces.application.ViewHandlerWrapper.createView(ViewHandlerWrapper.java:116)
		at org.springframework.faces.webflow.FlowViewHandler.createView(FlowViewHandler.java:75)
		at org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage$FaceletViewMetadata.createMetadataView(FaceletViewDeclarationLanguage.java:2424)
		at org.apache.myfaces.view.facelets.PartialStateManagementStrategy.restoreView(PartialStateManagementStrategy.java:211)
		at org.apache.myfaces.view.ViewDeclarationLanguageBase.restoreView(ViewDeclarationLanguageBase.java:129)
		at org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.restoreView(FaceletViewDeclarationLanguage.java:2018)
		at org.apache.myfaces.application.ViewHandlerImpl.restoreView(ViewHandlerImpl.java:339)
		at jakarta.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:98)
		at jakarta.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:98)
		at org.omnifaces.viewhandler.OmniViewHandler.restoreView(OmniViewHandler.java:142)
		at jakarta.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:98)
		at org.springframework.faces.webflow.FlowViewHandler.restoreView(FlowViewHandler.java:84)
		at org.apache.myfaces.lifecycle.RestoreViewExecutor.execute(RestoreViewExecutor.java:170)
		at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:172)
		at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:125)
		at jakarta.faces.webapp.FacesServlet.service(FacesServlet.java:223)
		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138)
		at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162)
		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138)
		at org.kitodo.production.servletfilter.EncodingFilter.doFilter(EncodingFilter.java:68)
		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162)
		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138)
		at org.omnifaces.filter.CompressedResponseFilter.doFilter(CompressedResponseFilter.java:242)
		at org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:108)
		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162)
		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138)
		at org.omnifaces.filter.FacesExceptionFilter.doFilter(FacesExceptionFilter.java:126)
		at org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:108)
		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162)
		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138)
		at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:108)
		at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:108)
		at org.springframework.security.web.FilterChainProxy.lambda$doFilterInternal$3(FilterChainProxy.java:231)
		at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:365)
		at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:101)
		at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
		at org.kitodo.production.security.SecurityObjectAccessFilter.doFilter(SecurityObjectAccessFilter.java:89)
		at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
		at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:125)
		at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)
		at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
		at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:131)
		at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:85)
		at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
		at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:100)
		at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
		at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:179)
		at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
		at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
		at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
		at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:151)
		at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:129)
		at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
		at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:235)
		at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:229)
		at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
		at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:107)
		at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:93)
		at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
		at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)
		at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)
		at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
		at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
		at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:82)
		at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:69)
		at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
		at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:62)
		at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
		at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
		at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42)
		at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
		at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
		at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:233)
		at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:191)
		at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)
		at org.springframework.web.filter.ServletRequestPathFilter.doFilter(ServletRequestPathFilter.java:52)
		at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)
		at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:74)
		at org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration$CompositeFilterChainProxy.doFilter(WebSecurityConfiguration.java:319)
		at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)
		at org.springframework.web.servlet.handler.HandlerMappingIntrospector.lambda$createCacheFilter$4(HandlerMappingIntrospector.java:267)
		at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)
		at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:74)
		at org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration$CompositeFilterChainProxy.doFilter(WebMvcSecurityConfiguration.java:240)
		at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:362)
		at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:278)
		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162)
		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138)
		at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165)
		at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88)
		at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:492)
		at org.apache.catalina.valves.rewrite.RewriteValve.invoke(RewriteValve.java:618)
		at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113)
		at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83)
		at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:654)
		at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72)
		at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
		at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)
		at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
		at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903)
		at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1775)
		at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
		at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973)
		at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491)
		at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
		at java.base/java.lang.Thread.run(Thread.java:1583)

Second exception (immediatly after the first):

SEVERE [http-nio-8080-exec-10] org.omnifaces.filter.FacesExceptionFilter.logException [c1755914-3adf-459d-b73e-fb925e57a844][127.0.0.1] FacesExceptionFilter: An exception occurred during processing servlet request. Error page '/pages/error' CANNOT be shown as response is already committed.
	java.lang.IllegalStateException: Cannot call sendError() after the response has been committed
		at org.apache.catalina.connector.ResponseFacade.checkCommitted(ResponseFacade.java:515)
		at org.apache.catalina.connector.ResponseFacade.sendError(ResponseFacade.java:341)
		at jakarta.servlet.http.HttpServletResponseWrapper.sendError(HttpServletResponseWrapper.java:89)
		at jakarta.servlet.http.HttpServletResponseWrapper.sendError(HttpServletResponseWrapper.java:89)
		at jakarta.servlet.http.HttpServletResponseWrapper.sendError(HttpServletResponseWrapper.java:89)
		at org.springframework.security.web.util.OnCommittedResponseWrapper.sendError(OnCommittedResponseWrapper.java:154)
		at jakarta.servlet.http.HttpServletResponseWrapper.sendError(HttpServletResponseWrapper.java:89)
		at org.apache.myfaces.application.ViewHandlerImpl.sendSourceNotFound(ViewHandlerImpl.java:522)
		at org.apache.myfaces.application.ViewHandlerImpl.createView(ViewHandlerImpl.java:262)
		at jakarta.faces.application.ViewHandlerWrapper.createView(ViewHandlerWrapper.java:116)
		at jakarta.faces.application.ViewHandlerWrapper.createView(ViewHandlerWrapper.java:116)
		at org.omnifaces.viewhandler.OmniViewHandler.createView(OmniViewHandler.java:126)
		at jakarta.faces.application.ViewHandlerWrapper.createView(ViewHandlerWrapper.java:116)
		at org.springframework.faces.webflow.FlowViewHandler.createView(FlowViewHandler.java:75)
		at org.omnifaces.exceptionhandler.FullAjaxExceptionHandler.renderErrorPageView(FullAjaxExceptionHandler.java:580)
		at org.omnifaces.exceptionhandler.FullAjaxExceptionHandler.handleAjaxException(FullAjaxExceptionHandler.java:467)
		at org.omnifaces.exceptionhandler.FullAjaxExceptionHandler.handle(FullAjaxExceptionHandler.java:416)
		at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:193)
		at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:125)
		at jakarta.faces.webapp.FacesServlet.service(FacesServlet.java:223)
		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138)
		at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162)
		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138)
		at org.kitodo.production.servletfilter.EncodingFilter.doFilter(EncodingFilter.java:68)
		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162)
		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138)
		at org.omnifaces.filter.CompressedResponseFilter.doFilter(CompressedResponseFilter.java:242)
		at org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:108)
		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162)
		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138)
		at org.omnifaces.filter.FacesExceptionFilter.doFilter(FacesExceptionFilter.java:126)
		at org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:108)
		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162)
		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138)
		at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:108)
		at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:108)
		at org.springframework.security.web.FilterChainProxy.lambda$doFilterInternal$3(FilterChainProxy.java:231)
		at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:365)
		at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:101)
		at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
		at org.kitodo.production.security.SecurityObjectAccessFilter.doFilter(SecurityObjectAccessFilter.java:89)
		at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
		at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:125)
		at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)
		at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
		at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:131)
		at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:85)
		at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
		at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:100)
		at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
		at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:179)
		at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
		at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
		at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
		at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:151)
		at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:129)
		at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
		at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:235)
		at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:229)
		at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
		at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:107)
		at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:93)
		at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
		at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)
		at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)
		at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
		at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
		at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:82)
		at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:69)
		at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
		at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:62)
		at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
		at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
		at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42)
		at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
		at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)
		at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:233)
		at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:191)
		at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)
		at org.springframework.web.filter.ServletRequestPathFilter.doFilter(ServletRequestPathFilter.java:52)
		at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)
		at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:74)
		at org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration$CompositeFilterChainProxy.doFilter(WebSecurityConfiguration.java:319)
		at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)
		at org.springframework.web.servlet.handler.HandlerMappingIntrospector.lambda$createCacheFilter$4(HandlerMappingIntrospector.java:267)
		at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)
		at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:74)
		at org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration$CompositeFilterChainProxy.doFilter(WebMvcSecurityConfiguration.java:240)
		at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:362)
		at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:278)
		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162)
		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138)
		at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165)
		at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88)
		at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:492)
		at org.apache.catalina.valves.rewrite.RewriteValve.invoke(RewriteValve.java:618)
		at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113)
		at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83)
		at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:654)
		at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72)
		at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
		at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)
		at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
		at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903)
		at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1775)
		at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
		at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973)
		at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491)
		at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
		at java.base/java.lang.Thread.run(Thread.java:1583)

I have no idea why at least the first exception is thrown nor where I can look for the origin of this exception as the path code is not clear (to me) and I have only limited knowledge about the UI integration.

Maybe @solth @thomaslow or @BartChris have an idea?

@solth
Copy link
Copy Markdown
Member

solth commented Apr 17, 2026

I am not sure what the reason for the exception is. If this proves to be more difficult to solve I would prefer to schedule it for after the release of Kitodo 4.0, so the later isn't unnecessarily delayed even more.

@solth solth added the dependencies Pull requests that update a dependency file label Apr 17, 2026
@henning-gerhardt
Copy link
Copy Markdown
Collaborator Author

I tried it with different OmniFaces versions:

  • 5.0, 5.1 and 5.2 are not affected with this exceptions.
  • With 5.2.1 the exceptions shown the first time and even on 5.2.2 and 5.2.3. So there was an change in 5.2.1 which is raising this exception. The two only "big" changes are "@ViewScoped unload race condition with distributed sessions" and "Servlets#facesRedirect parameter regressed since security improvement in 5.2" (see https://showcase.omnifaces.org/whatsnew). In 5.2.2 there is a fix reagarding to this @ViewScope issue to.
  • I read their GitHub Issues and Pull requests and this @ViewScope solutions are back ported to version 4.7.4 and on trying this version (including 4.7.5) the exceptions are raised in 4.7.4 / 4.7.5 too

@henning-gerhardt
Copy link
Copy Markdown
Collaborator Author

I found a "easy" way to reproduce this exceptions:

  1. Search / filter for a process with images and some structures in the process list
  2. Open this process in the meta data editor from the process list
  3. Click without any interaction on the "Exit" button
  4. See the exceptions in the Tomcat log

@solth
Copy link
Copy Markdown
Member

solth commented Apr 17, 2026

I found a "easy" way to reproduce this exceptions:

1. Search / filter for a process with images and some structures in the process list

2. Open this process in the meta data editor from the process list

3. Click without any interaction on the "Exit" button

4. See the exceptions in the Tomcat log

I can confirm that this exception is now reproducible the way @henning-gerhardt described it above, after #6994 has been merged.

@thomaslow
Copy link
Copy Markdown
Collaborator

Please keep in mind that dependencies related to JSF are somewhat linked to each other and linked to the Tomcat version. Currently, omnifaces v4 is used because it matches the ecosystem around the Servlet Spec 6.0. Omnifaces 5 is listed to be mainly compatible with Servlet Spec 6.1, which is only supported by Tomcat 11. I wouldn't recommend updating these libraries to their absolute most recent version, but sticking to the current major release that is stated to be compatible to the current Tomcat version.

Of course, we still need to investigate the problem that also affects 4.7.5.

The exception means that the view-state (all @ViewScoped beans for the Metadata Editor) was cleaned up for some reason, which should not happen before the user navigates away from the page with a "view action" or the view-state is dropped from a LRU cache. I am not sure how omnifaces plays into this. Omnifaces shouldn't affect how view-state is cleaned up by JSF. I would have to investigate this in detail.

@henning-gerhardt
Copy link
Copy Markdown
Collaborator Author

henning-gerhardt commented Apr 17, 2026

@thomaslow : You are right. I did not look deep into the requirements for OmniFaces 5.x usage.

My thoughts are now:

  1. I would let this pull request stay in draft mode until we are switching to Tomcat 11 usage or I can close this pull request and try to keep it up to date in our fork without notifying.
  2. As the issue with this exceptions is even in 4.7.x version of Omnifaces I would open a issue for them, so discussing and solving can be done in this new issue.

@solth : What did you think about this 2 thoughts above?

@solth
Copy link
Copy Markdown
Member

solth commented Apr 17, 2026

@solth : What did you think about this 2 thoughts above?

I agree with both. Concerning this pull request, I would suggest to close it and re-open it once the update to Tomcat 11 is actually being worked on, to avoid adding another old, stale PR lingering in the list for a long time.

@henning-gerhardt
Copy link
Copy Markdown
Collaborator Author

@solth: I will do both: closing (and referencing) this pull request and open a new issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants