Tag: spring session

websocket会话示例不集群.. spring-session-1.2.2

我正在测试spring会话websocket样本的集群。 我按照文档中的描述运行示例: http : //docs.spring.io/spring-session/docs/current/reference/html5/guides/websocket.html 。 代码来自: https : //github.com/spring-projects/spring-session/archive/1.2.2.RELEASE.zip 。 如果我在一个Tomcat服务器上运行应用程序,则所有工作都按预期工作。 但如果我在两台服务器上运行两个应用程序,则无效。 我在8080和8090的两个Tomcat服务器中的每一个上启动应用程序并登录到每个服务器。 8080按预期出现。 8090按预期出现并列出8080的用户名。但8090的用户名永远不会添加到8080的列表中。 如果我刷新8090的网页,则用户将从列表中删除,8090的用户将被添加到8080的列表中。此循环将继续使用这两个应用程序。 看起来春季会议正在分享会话信息。 我在Redis中看到两个登录条目。 我是否希望此示例在多个服务器上运行? 提前致谢。

添加新的Spring会话时,cookie值出错

在我的基于Spring Boot 1.4的应用程序中,我使用Spring Session将会话数据与JDBC一起存储在数据库中。 这适用于默认会话。 但是当我想添加一个新会话时(通过向应用程序URL添加?_s=1 ),我得到以下exception: java.lang.IllegalArgumentException: An invalid character [32] was present in the Cookie value 这是什么问题? 编辑:请注意,我自己没有设置cookie值, Spring Session这样做的。 因此我无法分辨它试图设置的值。 完整的堆栈跟踪在这里: java.lang.IllegalArgumentException: An invalid character [32] was present in the Cookie value at org.apache.tomcat.util.http.Rfc6265CookieProcessor.validateCookieValue(Rfc6265CookieProcessor.java:160) ~[tomcat-embed-core-8.5.4.jar:8.5.4] at org.apache.tomcat.util.http.Rfc6265CookieProcessor.generateHeader(Rfc6265CookieProcessor.java:109) ~[tomcat-embed-core-8.5.4.jar:8.5.4] at org.apache.catalina.connector.Response.generateCookieString(Response.java:989) ~[tomcat-embed-core-8.5.4.jar:8.5.4] at org.apache.catalina.connector.Response.addCookie(Response.java:937) ~[tomcat-embed-core-8.5.4.jar:8.5.4] at org.apache.catalina.connector.ResponseFacade.addCookie(ResponseFacade.java:386) ~[tomcat-embed-core-8.5.4.jar:8.5.4] at org.springframework.session.web.http.DefaultCookieSerializer.writeCookieValue(DefaultCookieSerializer.java:112) ~[spring-session-1.2.1.RELEASE.jar:na] at org.springframework.session.web.http.CookieHttpSessionStrategy.onNewSession(CookieHttpSessionStrategy.java:213) […]

Spring session + Spring web socket。 根据会话ID将消息发送到特定客户端

我已经从堆栈溢出跟踪Quetion1和Quetion2 ,根据其sessionId向特定客户端发送消息,但无法找到成功。 下面是我的示例RestController类 @RestController public class SpringSessionTestApi { @Autowired public SimpMessageSendingOperations messagingTemplate; @MessageMapping(“/messages”) public void greeting(HelloMessage message, SimpMessageHeaderAccessor headerAccessor) throws Exception { String sessionId = (String) headerAccessor.getSessionAttributes().get(“SPRING.SESSION.ID”); messagingTemplate.convertAndSendToUser(sessionId,”/queue/test”,message, createHeaders(sessionId)); } private MessageHeaders createHeaders(String sessionId) { SimpMessageHeaderAccessor headerAccessor = SimpMessageHeaderAccessor.create(SimpMessageType.MESSAGE); headerAccessor.setSessionId(sessionId); headerAccessor.setLeaveMutable(true); return headerAccessor.getMessageHeaders(); } } 会话ID:当客户端发送createSession请求时,会生成新的spring sessionId,同样也会存储在MongoDB中。 在此之后,当客户端发送Web套接字连接请求时,会收到相同的sessionId,它按预期存储在mongoDb中。 直到这一切都运转良好。 现在我的工作是根据sessionId将响应发送回客户端。 为此我在web套接字类下面: @Configuration @EnableScheduling @EnableWebSocketMessageBroker public […]