WebLogic在进行websocket连接时抛出以下异常:
java.lang.IllegalStateException: The async-support is disabled on this request: weblogic.servlet.internal.ServletRequest
Impl@6682044b
调试时发现报错出在WebLogicRequestUpgradeStrategy类里的handleSuccess(servletRequest, servletResponse, upgradeInfo, upgradeResponse)函数。AsyncContext asyncContext = request.startAsync()这一步是false。
解决办法是在web.xml里添加<async-supported>true</async-supported>
一处是
<servlet>
<servlet-name>mvc-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-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<async-supported>true</async-supported>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>