我正在尝试使用 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 构造函数调用结束,这些调用无法编译,当然不值得在这里重现。
我意识到这有点模糊,这是因为我有点迷路了!有没有人做过这样的事情,或者有一些一般性的指导可以做出贡献?