【问题标题】:Manually setting up Spring WebSocket STOMP support手动设置 Spring WebSocket STOMP 支持
【发布时间】:2014-07-14 22:11:00
【问题描述】:

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

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

【问题讨论】:

    标签: java spring stomp spring-websocket


    【解决方案1】:

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

    上面写着

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

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

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

    【讨论】:

    猜你喜欢
    • 2017-12-05
    • 2016-11-09
    • 2016-05-06
    • 2020-06-17
    • 2016-06-28
    • 2015-11-25
    • 2022-12-15
    • 2020-12-19
    • 2012-12-27
    相关资源
    最近更新 更多