2

我正在尝试使用 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 构造函数调用结束,这些调用无法编译,当然不值得在这里重现。

我意识到这有点模糊,这是因为我有点迷路了!有没有人做过这样的事情,或者有一些一般性的指导可以做出贡献?

4

1 回答 1

2

您是否尝试过股票投资组合的示例应用程序测试。(此链接位于 spring 文档链接的最后)。

它说

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

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

第二种选择可能是您需要的。

于 2014-07-31T12:48:10.303 回答