当前位置: 首页 > 面试题库 >

ShallowEtagHeaderFilter在WAS8应用服务器下不起作用

皇甫波峻
2023-03-14
问题内容

org.springframework.web.filter.ShallowEtagHeaderFilter无法在WAS8应用程序服务器下设置响应标头,说明为“
警告:无法设置标头。响应已提交
”。但是,在Tomcat服务器上进行测试时,此方法工作正常。ShallowEtagHeaderFilter确实包装了原始响应以延迟响应主体的编写,但是响应仍然是在过滤器链执行后提交的。这是可能的Websphere错误吗?欢迎提供任何解决此问题的建议/解决方法。


问题答案:

我通过覆盖ServletResponse.flushBuffer方法解决了这个问题。在WAS8下flushBuffer过早地被调用。通过HttpServletResponseWrapper不操作的flushBuffer方法来解决问题ShallowEtagHeaderFilter

public class HttpCacheFilter extends ShallowEtagHeaderFilter {

    @Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {

        HttpCacheResponseWrapper responseWrapper = new HttpCacheResponseWrapper(response);
        super.doFilterInternal(request, responseWrapper, filterChain);
    }

    private static class HttpCacheResponseWrapper extends HttpServletResponseWrapper {

        public HttpCacheResponseWrapper(HttpServletResponse response) {
            super(response);
        }

        @Override
        public void flushBuffer() throws IOException {
            // NOOP
        }
    }
}


 类似资料:
  • 问题内容: 我有这个Docker Compose配置,我只需创建一个NodeJS容器并在其中安装Angular CLI。 之后,我可以使用SSH在容器内进行SSH 。可以正常工作,但似乎不起作用。它已正确启动,控制台中没有错误。但是,如果我访问(我将端口4200映射到80),则不会加载任何内容。 我想念什么吗? 问题答案: 在您的Dockerfile中,您缺少Expose行,例如: 尝试将其放在d

  • 问题内容: 从我的本地计算机到开发服务器,Web Deploy 3.0可以使用以下命令与Visual Studio 2012发布配置文件配合使用: msbuild。\ myproj.csproj / verbosity:d /p:DeployOnBuild=true;PublishProfile=Develop;VisualStudioVersion=11.0;AllowUntrustedCert

  • 我想从另一个 ejb 项目中的另一个单例 EJB 中调用 ejb 上的本地无状态 EJB。两个 EJB 项目都位于同一个 ear 文件中。应用程序服务器是 WebSphere 应用程序服务器 8.0.0.1。 第一个EJB 3.1-项目(PersistenceEJB.jar): 连接 无状态Bean: ejb jar。xml和ibm ejb jar bnd。xml为空。 第二个EJB 3.1项目(

  • 如果可以请帮忙。 瓦利德

  • 我使用这段代码通过JAVA运行简单的TCP服务器,并使用Socket协议android应用程序作为客户端。问题是,当客户端连接时,我会发送消息,服务器端什么都不做,直到我断开客户端的连接,之后会出现消息。我认为在while((inputLine=in.readLine())!=空)

  • 我正试图用服务栈实现Swagger。我已经用nuget安装了带有swagger的服务栈。当前的DLL版本大多报告为3.9.56.0。 我正在努力遵循…https://github.com/ServiceStack/ServiceStack.UseCases/tree/master/SwaggerHelloWorld提供的例子 这个指令看起来相当简单... 在我通过nuget安装后(按照文档说明),

  • 我正在另一台计算机上安装Wamp服务器,以运行一个中型数据库和用户界面。我已经成功拦截了IIS,并将服务器路由到Localhost:8080。但是每当我试图从本地主机主页访问我的项目时,在www文件中;我被重定向到一个页面没有找到错误。 当我将鼠标悬停在链接上方时,目录总是出现“http:// ProjectFolderNameHere /”。当它应该是“http:// LocalHost:808

  • 我在我的Laravel项目中有这个ajax请求(这是一个简单的版本,但它正在工作): 当我在本地工作,我使用PHP工匠服务ajax调用工作,但当我部署到我的正式服没有(因为路径 /admin/lessons/addMember/licenseMemberId不是服务器中的完整路径)。最好的方法应该是走这条路线,但我不知道怎么走。这是路由表: 有没有办法在参数设置中使用laravel路线?如果没有,