websocket出现 The async-support is disabled on this request: weblogic.servlet.internal.ServletRequest

本文档记录了在使用WebSocket实现消息通知功能时,在Weblogic服务器上部署遇到的问题。前端出现WebSocket连接失败,错误码为1006,Weblogic内部报错提示异步支持被禁用。解决方案是在web.xml中为servlet和filter添加async-supported属性设为true,以启用异步支持。经过调整,最终成功实现了WebSocket的正常通信。
摘要由CSDN通过智能技术生成

Websocket 部署 weblogic 出现问题


项目背景

公司项目前端页面中需要新增一个消息通知功能,技术点:采用websocket来实现此功能


一、环境

开发环境:采用的是 idea + tomcat
测试环境:weblogic发布项目

二、问题

1.前端

前端报错如下:

WebSocket connection to 'ws://ip:8000/app/ws?token=a507f7d60a2743f5954ff7d03e49bbe3' failed: Invalid frame header
initWebSocket @ 6.45a48267c40b95452e12.js:1

2.websocket错误码 1006

图片如下:
在这里插入图片描述

3.weblogic 中错误

 The async-support is disabled on this request: weblogic.servlet.internal.ServletRequestImpl@5465779

解决

调试时发现报错出在WebLogicRequestUpgradeStrategy类里的handleSuccess(servletRequest, servletResponse, upgradeInfo, upgradeResponse)函数。AsyncContext asyncContext = request.startAsync()这一步是false。

## 解决办法是在web.xml里添加 
<async-supported>true</async-supported>
// servlet 处
<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
    <async-supported>true</async-supported>
  </servlet>
// filter 中(所有的filter)
  <filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <async-supported>true</async-supported>
  </filter>
  ...

最后可以正常接收数据:

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值