java - 手动设置 Spring WebSocket STOMP 支持

标签 java spring stomp spring-websocket

我正在尝试使用 spring-websocket 和 spring-messaging 设置 STOMP WS 端点。我正在尝试手动执行此操作:根本不涉及应用程序上下文,当然也不涉及调度程序。我的目标是在 ServletContextListener 内的代码中连接适当的 Spring 组件,然后直接使用 JSR 356 兼容容器(Tomcat 7)中的 javax.websocket.server.ServerContainer 注册连接的组件。首先,我希望将其与 spring-messaging 中内置的“简单”代理一起使用;其次,我想实现我自己的“代理”,以使用 VM 传输直接与进程内 ActiveMQ 集成。这与 spring-messaging 也提供的 STOMP 中继形成对比。

Spring 文档指出 ( http://docs.spring.io/spring/docs/current/spring-framework-reference/html/websocket.html ):

“...Spring 的 WebSocket 支持不依赖于 Spring MVC。借助 WebSocketHttpRequestHandler 将 WebSocketHandler 集成到其他 HTTP 服务环境中相对简单。”

但是,我觉得事情并不简单。本质上,我从以下开始:

public void contextInitialized(ServletContextEvent sce) {
    ServerContainer websocketContainer = (ServerContainer) sce.getServletContext().getAttribute("javax.websocket.server.ServerContainer");
    ???
    websocketContainer.addEndpoint(???);
}

最终得到了各种不连贯的 spring-websocket 和 spring-messaging 构造函数调用,这些调用无法编译,当然不值得在这里复制。

我意识到这有点含糊,这是因为我有点迷失了!有没有人做过类似的事情,或者有一些一般指导可以贡献?

最佳答案

你试过吗sample application - tests for the stock portfolio 。 (此链接位于 spring 文档链接的最末尾)。

它说

Demonstrates 3 approaches to testing a Spring STOMP over WebSocket application:

  • 加载实际 Spring 配置(上下文子包)的服务器端 Controller 测试
  • 服务器端 Controller 测试,一次测试一个 Controller ,无需加载任何 Spring 配置(独立子包)
  • 使用嵌入式 Tomcat 和简单的 STOMP Java 客户端(tomcat 子包)进行端到端的完整集成测试 有关更多详细信息,请参阅相应测试的 Javadoc。

第二个选项可能就是您所需要的。

关于java - 手动设置 Spring WebSocket STOMP 支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24746862/

相关文章:

java - 是否有特定于 URL 的 hashCode 方法?

java - 如何使用 Java Regex 查找字符串中所有重复的字符序列?

java - IntelliJ idea 的 Ctrl + U 快捷键在 MyEclipse 中等效

java - 在 Swing (Netbeans) 中创建网格

java - Spring 4 + Websockets : how to close the session?

java - Spring JPA : Using multiple projection on same query interface

java - 实体中的 Spring roo 服务 Autowiring 始终为空(使用带有 @RooJpaEntity 的 JPA 存储库)

java - 使用 Spring 和 JUnit 在 @Before 和 @Test 执行之间注入(inject)逻辑

jms - Stomp 选择器条件

java - Spring框架支持什么版本的stomp