Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring将websocket处理程序bean作为单例使用,尽管它是';s原型范围_Java_Spring Websocket - Fatal编程技术网

Java Spring将websocket处理程序bean作为单例使用,尽管它是';s原型范围

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 WebSocket创建聊天时遇到了一个问题。
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:User1
org.kolokolov.chat.controller。ChatWebSocketHandler@641f80ef:User2
感谢您的关注和建议。看起来很合理。但在我尝试之后,问题仍然存在<代码>org.kolokolov.chat.controller。ChatWebSocketHandler@641f80ef:User1
org.kolokolov.chat.controller。ChatWebSocketHandler@641f80ef:User2