首页 > 解决方案 > Spring-MVC - 从 web-jar 加载静态资源导致 WebSphere Liberty 中的异常

问题描述

我们正在将 JEE 企业应用程序从 WebSphere 移植到 Liberty 19.0.0.6。为了共享静态资源(此处为 PNG 图像),我们使用 web-fragment jar-library,其中包含位于 META-INF/resources 包中的图像。我们的 UI 使用 Spring-MVC 映射到的 DispatcherServlet,它应该处理 Image 的负载。它使用 DefaultServletHttpRequestHandler 源代码做得很好。(您可以在此处找到源代码)。

但是在这个类中,Spring MVC 正在检测 Web 服务器,以转发加载图像的请求。这会在 WebSphere Liberty 服务器中导致映射冲突异常,但服务器会传送映像。无论如何,你会得到大量的堆栈跟踪(控制台、日志……)。

我们正在与 IBM Support 讨论这个问题。该解决方案在以前的服务器 WebSphere 传统上运行良好,但不再在 Liberty 上运行。目前的状态是,IBM 认为 Spring-MVC 在不受支持的场景中使用服务器内部类。

[错误] SRVE0777E:Es wurde eine Ausnahme von der Anwendungsklasse 'com.ibm.ws.webcontainer.extension.DefaultExtensionProcessor.service:1.605' ausgelöst。javax.servlet.ServletException:java.lang.Exception:com.ibm.ws.webcontainer.osgi.servlet.EntryServletWrapper@356db043 的映射冲突:目标 com.ibm.ws.webcontainer.osgi.servlet.EntryServletWrapper@df6117c8 已存在于com.ibm.ws.webcontainer.extension.DefaultExtensionProcessor.service(DefaultExtensionProcessor.java:1605) 的节点图像在 [internal classes] at org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler.handleRequest(DefaultServletHttpRequestHandler.java:122) 在org.springframework.web.servlet 中的 org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAdapter.java:51)。

WebSphere Liberty 服务器是否已经知道该问题,是否有其他软件项目受此问题影响?在我们看来,现在这意味着 Liberty 服务器上不完全支持 Spring-MVC。所以我们要么需要不同的服务器,要么必须迁移出 Spring-MVC。你在这里的观点是什么?您是否正在使用 IBM 的内部代码,但它不再起作用了?如果是这样,那可以在 Spring-MVC for Liberty 服务器中修复。

标签: spring-mvcwebsphere-libertyweb-fragment

解决方案


推荐阅读