Spring4.0 WebSocket
程序员文章站
2022-05-25 17:08:08
...
HttpSessionHandshakeInterceptor 拦截不生效
问题说明
系统是SpringMVC4.0+版本,前端JSP , HttpSessionHandshakeInterceptor 配置的拦截器始终不生效, websockt一直404 , 观察日志,这个拦截器一直没有被加载.
解决
首先你要注意你的SpringMVC的拦截器不要拦截这个/websoket结尾路径请求
其次注意websoket配置的加载位置,一定要在servlet中或spring-mvc.xml中加载
-- 这是我的配置,和网上的大同小异,HandshakeInterceptor拦截请求一直没被加载.
<bean id="websocket" class="com.xxx.WebsocketEndPoint"/>
<websocket:handlers>
<!-- 配置消息处理bean和路径的映射关系 -->
<websocket:mapping path="/websocket" handler="websocket"/>
<!-- 配置握手拦截器 -->
<websocket:handshake-interceptors>
<bean class="com.xxxx.HandshakeInterceptor"/>
</websocket:handshake-interceptors>
<!-- 开启sockjs,去掉则关闭sockjs -->
<!-- <websocket:sockjs/> -->
</websocket:handlers>
<!-- 配置websocket消息的最大缓冲区长度 -->
<bean class="org.springframework.web.socket.server.standard.ServletServerContainerFactoryBean">
<property name="maxTextMessageBufferSize" value="8192"/>
<property name="maxBinaryMessageBufferSize" value="8192"/>
</bean>
--一定要在servlet里加载: 我是用的 web.xml 或者是放在spring-mvc.xml中
<!-- SpringMVC -->
<servlet>
<servlet-name>SpringMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/app/spring-mvc.xml,classpath:spring/app/spring-websocket.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>
<servlet-mapping>
<servlet-name>SpringMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
上一篇: 【SQL】SQL语句积累
下一篇: 在Go中复制文件最流行的3种方法