Java Spring将websocket处理程序bean作为单例使用,尽管它是';s原型范围
我在尝试使用Spring WebSocket创建聊天时遇到了一个问题。Java Spring将websocket处理程序bean作为单例使用,尽管它是';s原型范围,java,spring-websocket,Java,Spring Websocket,我在尝试使用Spring WebSocket创建聊天时遇到了一个问题。 Spring版本-4.3.1. 我创建了一个类ChatWebSocketHandler,扩展了TextWebSocketHandler。以下是WebSocket的XML配置: <websocket:handlers> <websocket:mapping path="/websocket/chat" handler="chatWebSocketHandler" /> <webso
Spring版本-4.3.1.
我创建了一个类
ChatWebSocketHandler,扩展了TextWebSocketHandler
。以下是WebSocket的XML配置:<websocket:handlers>
<websocket:mapping path="/websocket/chat" handler="chatWebSocketHandler" />
<websocket:handshake-interceptors>
<bean class="org.springframework.web.socket.server.support.HttpSessionHandshakeInterceptor" />
</websocket:handshake-interceptors>
</websocket:handlers>
<bean name="chatWebSocketHandler" class="org.kolokolov.chat.controller.ChatWebSocketHandler" scope="prototype" />
如您所见,查看散列码,两个用户使用的是同一个ChatWebSocketHandler实例。我应该考虑什么来避免这种情况?这是一个古老的问题,但仍然没有得到解答,所以处理它会很好 对于具有以下代码的端点:
package com.my.company;
public class ChatWebSocketHandler extends TextWebSocketHandler {
//override needed methods
}
有一个类org.springframework.web.socket.handler.PerConnectionWebSocketHandler,它可以帮助您实现拥有一个handler连接/实例的目标。XML配置如下所示:
<bean id="chatPerConnectionHandler" class="org.springframework.web.socket.handler.PerConnectionWebSocketHandler">
<constructor-arg>
<value type="java.lang.Class">com.my.company.ChatWebSocketHandler</value>
</constructor-arg>
</bean>
<websocket:handlers>
<websocket:mapping path="/chat" handler="chatPerConnectionHandler" />
<!-- your config here -->
</websocket:handlers>
com.my.company.ChatWebSocketHandler
这是一个老问题,但仍然没有得到解答,因此处理它会很好
对于具有以下代码的端点:
package com.my.company;
public class ChatWebSocketHandler extends TextWebSocketHandler {
//override needed methods
}
有一个类org.springframework.web.socket.handler.PerConnectionWebSocketHandler,它可以帮助您实现拥有一个handler连接/实例的目标。XML配置如下所示:
<bean id="chatPerConnectionHandler" class="org.springframework.web.socket.handler.PerConnectionWebSocketHandler">
<constructor-arg>
<value type="java.lang.Class">com.my.company.ChatWebSocketHandler</value>
</constructor-arg>
</bean>
<websocket:handlers>
<websocket:mapping path="/chat" handler="chatPerConnectionHandler" />
<!-- your config here -->
</websocket:handlers>
com.my.company.ChatWebSocketHandler
感谢您的关注和建议。看起来很合理。但在我尝试之后,问题仍然存在<代码>org.kolokolov.chat.controller。ChatWebSocketHandler@641f80ef:User1org.kolokolov.chat.controller。ChatWebSocketHandler@641f80ef:User2
感谢您的关注和建议。看起来很合理。但在我尝试之后,问题仍然存在<代码>org.kolokolov.chat.controller。ChatWebSocketHandler@641f80ef:User1org.kolokolov.chat.controller。ChatWebSocketHandler@641f80ef:User2