手动设置Spring WebSocket STOMP支持

时间:2014-07-14 22:11:01

标签: 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集成。这与弹簧消息传递也提供的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构造函数调用,这些调用无法编译,当然也不值得再现。

我意识到这有点模糊,这是因为我有点迷失了!有没有人做过这样的事情,或者有一些总体指导要做出贡献?

1 个答案:

答案 0 :(得分:2)

您是否尝试过sample application - tests for the stock portfolio。 (此链接位于spring文档链接的最后)。

它说

  

演示了通过WebSocket应用程序测试Spring STOMP的3种方法:

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

第二种选择可能就是你所需要的。