Spring4.0 WebSocket

问题说明

系统是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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值