Spring WebSockets XML 配置不提供brokerMessagingTemplate

2024-06-24

我正在尝试使用 STOMP 将 WebSockets 支持添加到使用 XML 配置的 Spring MVC 应用程序中。到目前为止,一切进展顺利,我已经成功让 WebSockets 服务器进行监听,并且 stomp.js 可以连接到它并发送消息和接收响应。

我还没有设法开始工作的是支持服务器向客户端发送任意消息,这些消息不是对从客户端收到的消息的响应。这意味着到目前为止,这实际上只是 REST 的一个更复杂的版本,并不太有用。

我的 XML 配置如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:websocket="http://www.springframework.org/schema/websocket"
   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/websocket http://www.springframework.org/schema/websocket/spring-websocket.xsd">

  <websocket:message-broker>
    <websocket:stomp-endpoint path="/api/websocket/stomp" allowed-origins="*">
    </websocket:stomp-endpoint>

    <websocket:simple-broker prefix="/topic,/queue" />

    <websocket:message-converters>
        <bean class="org.springframework.messaging.converter.MappingJackson2MessageConverter">
            <property name="objectMapper" ref="objectMapper" />
        </bean>
    </websocket:message-converters>
   </websocket:message-broker>

  <bean class="uk.co.grahamcox.webapp.DebugController">
    <constructor-arg name="clock" ref="clock" />
    <constructor-arg name="template" ref="brokerMessagingTemplate" />
  </bean>
</beans>

(DebugController 是一个类,它有一个返回服务器时间的方法,作为 REST 和 WS 处理程序都可以正常工作)

启动时我得到:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'brokerMessagingTemplate' is defined

令人沮丧的是,IntelliJ 自动为我完成了“brokerMessagingTemplate”参考,我可以单击它到 AbstractMessageBrokerConfiguration 中的 @Bean 定义。

我假设我在 XML 中缺少一些配置来完成这项工作,但我无法在文档中找到这是什么。

有什么建议么?


支持服务器向客户端发送任意消息 不是对从客户收到的回复的回复。

向客户端发送消息的一种方法是让他们首先订阅一个主题 - 确保了解“应用程序目标前缀”和“代理前缀”之间的区别。在这种特殊情况下,您希望客户端订阅代理目标,然后您的服务器可以随时向所有这些客户端发送消息。

了解这一点的最好方法是查看参考文档中的消息流 http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/websocket.html#websocket-stomp-message-flow.

要发送这些消息,您的应用程序代码需要一个消息模板。

您可以通过将表单 bean 名称切换为实际 bean 类型来修复代码示例SimpMessagingTemplate.

  <bean class="uk.co.grahamcox.webapp.DebugController">
    <constructor-arg name="clock" ref="clock" />
    <constructor-arg name="template" class="org.springframework.messaging.simp.SimpMessagingTemplate" />
  </bean>

The 参考文档提到了 bean 名称 http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/websocket.html#websocket-stomp-handle-send但在使用XML配置时似乎没有用这个名称注册。随意创建一个JIRA问题 https://jira.spring.io来改善这一点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring WebSockets XML 配置不提供brokerMessagingTemplate 的相关文章

  • 如何选择主题与队列

    当我们设计应用程序时如何选择Topic Queue类型实现 我知道 a 如果有多个消费者使用该消息 则使用 Topicb 如果只有一个消费者则使用Queue 请提供更多需要考虑的点 比如并发 消息持久化 负载均衡等等 Thanks Rw 如
  • RSA Java 加密和 Node.js 解密不起作用

    我有一个系统 需要在 javascript 中生成 RSA 密钥对 然后将公钥存储在服务器端的数据库中 作为字符串 然后 Java 中的服务器端将使用存储的公钥对字符串进行加密密钥并将其发送到客户端 客户端将使用私钥解密该字符串 我在客户端
  • Linux 上的 JavaFX

    Linux x86 和 x64 上的 JavaFX 情况如何 JavaFX 应用程序可以在 Linux 操作系统上顺利执行吗 我发现了 2011 年和 2012 年的一些问题 当时应用程序不稳定 目前发布的 JFX 版本是 2 2 4 在
  • 在运行时后期更改 SessionFactory 数据源 jdbcurl

    我正在为没有网络连接的环境编写一个桌面java应用程序 我试图将应用程序数据尽可能安全地存储在加密的进程内 hsqldb 中 并使用未加密的用户信息 hsqldb Hsqldb 要求在创建连接时在 jdbcurl 中设置 crypto ke
  • 如何从 ByteBuffer 转换为 Integer 和 String?

    我转换了一个int使用 ByteBuffer 的字节数组putInt 方法 我该如何做相反的事情 那么将这些字节转换为 int 吗 此外 我使用 String 的将字符串转换为字节数组getBytes 方法 我如何将其反过来转换 这byte
  • 获取 Spring Boot 中当前活动数据源的引用

    我想通过实现数据库数据初始化DataSourceInitializer 我将这些方法放在我的 Spring Boot 主方法下面 但似乎它根本没有被执行 我尝试故意删除字符只是为了触发一个错误来确认执行 什么也没有发生 Configurat
  • 自动装箱是否调用 valueOf()?

    我试图确定以下陈述是否保证为真 Boolean true Boolean TRUE Boolean true Boolean valueOf true Integer 1 Integer valueOf 1 我一直认为自动装箱相当于调用va
  • 使用 Hashmap 理解两个或多个键

    我的哈希图有问题 在我的哈希映射方法中 我希望有两个或多个关键字作为键 而不是只有一个 例如 我希望用户输入一些包含两个或多个关键字的句子 假设 教授姓名 是关键字 例如 String temp3 instructor teacher me
  • java应用程序,线程在终止MySQL连接后挂起

    我有一些工作线程正在运行 其中包括 MySQL 和 mysql connector java 5 1 20 当我杀死一些 SQL 语句 使用 mysql 客户端的kill 连接id 时 java线程挂起 这应该抛出一些异常 jstack 打
  • Java 多态性中的字段如何工作? [复制]

    这个问题在这里已经有答案了 我正在读书面试问题 http javabypatel blogspot in 2016 04 java interview questions html关于java 发现了很好的例子 但感到困惑 因为没有很好 更
  • NoSuchMethodError:org.springframework.data.repository.config.RepositoryConfigurationSource.getAttribute

    我正在尝试在 spring boot 应用程序中使用 spring data redis 来使用 redis 我正在创造JedisConnectionFactory如下 RedisStandaloneConfiguration config
  • 将 Tango 3D 点投影到屏幕 Google Project Tango

    Project Tango 提供了点云 如何获取点云中 3D 点的像素位置 以米为单位 我尝试使用投影矩阵 但得到的值非常小 0 5 1 3 等 而不是 1234 324 以像素为单位 我包含我尝试过的代码 Get the current
  • JRuby调用了错误的方法

    我在调用 Java 方法时遇到了一个奇怪的问题JRuby http en wikipedia org wiki JRuby 在我的 Java 类中 这些方法定义了两次 看来 JRuby 调用了错误的方法 所以我尝试使用java method
  • 使用 ProGuard 混淆代码后如何保持 javadoc 可见?

    我使用 progured 4 7 混淆了我的代码 并保留了 A 类 其中包含描述该类功能的 javadoc keep public class com mysite ClassA public keepattributes InnerCla
  • SwingWorker 和 Executor 的区别

    我正在使用 SwingWorker 在我正在制作的应用程序上执行一些重负载任务 虽然今天我遇到了 Executor 类和这个例子 Executors newCachedThreadPool execute new Runnable publ
  • JdbcTemplate queryForInt/Long 在 Spring 3.2.2 中已弃用。应该用什么来代替呢?

    JdbcTemplate 中的 queryforInt queryforLong 方法在 Spring 3 2 中已弃用 我无法找出为什么或什么被认为是使用这些方法替换现有代码的最佳实践 典型方法 int rowCount jscoreJd
  • allure2 侦听器在控制台中输出步骤

    我正在使用 Allure2 和 TestNG 我想编写自己的侦听器 在控制台输出中打印 Steps 我在 allure 中看到了 StepLifecycleListener 接口 但我无法在 TestNg 中实现此侦听器 有什么指点吗 Ov
  • 在 Ubuntu 上的 Tomcat 中加载共享本机库

    如何在 Ubuntu 上的 Tomcat6 中加载共享库 我创建了一个名为 libawragrids so 的库 awragrids 并将其放置在 var lib tomcat6 shared 我在调用启动 tomcat 的终端中设置了以下
  • 从 Java 程序中获取局部变量的名称和类型

    这是我正在尝试的代码 JavaCompiler compilerA ToolProvider getSystemJavaCompiler int resultA compilerA run null null null Users a Do
  • java中的“main”可以返回字符串吗?

    java中的public static void main String args 是否有可能返回String代替void 如果是 怎么办 public static String main String args 代替 public st

随机推荐

  • Dialogflow V2 Messenger 与多个消息集成

    我正在尝试在对 Dialogflow 的一次 Webhook 调用中发送多条消息 该消息应传递给 Messenger 现在 我的 Webhook 响应出现故障的 JSON 正文 fulfillmentText Text fulfillmen
  • 使用请求登录具有 javascript 登录表单的网站

    首先我要说的是我的编程经验很少 在过去几天尝试编写这个程序时 我学到了很多东西 我正在 Windows 7 上使用 PyCharm requests Beautiful Soup 和 lxml 运行 Python 2 7 我正在尝试从一个严
  • 最常见的已检查和未检查 Java 异常? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 据我了解 如果不逐一查找 API 文档 就无法找出方法抛出了哪些异常 由于这是不可能的 我想反向研究并询问您在处理时遇到的最常见的异常
  • 在 Mac 上的 IntelliJ IDEA 中更改基本代码完成的键盘快捷键

    There is very important shortcut for Basic Code Completion in IntelliJ IDE which assumed to be invoked as control space
  • 其他用户之间的 iCloud 共享 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 据我所知 iCloud 就像个人存储 您可以使用自己的 Apple ID 我想问的是 用户是否可以存储例如图像并与其他用户共享 这意味着类
  • css 中 (div#container) 和 (#container) 有什么区别

    众所周知 html标签中的id应该是唯一的 因此可以直接使用 container 但是我注意到一些开发人员会使用标签名称作为前缀 如下所示 div container 现在有区别吗 和性能有关系吗 或者这是最佳实践惯例 还是为了代码的易读性
  • 如何在 Android 上以编程方式删除文件?

    我在 4 4 2 上 尝试通过 uri 删除文件 图像 这是我的代码 File file new File uri getPath boolean deleted file delete if deleted boolean deleted
  • 如何让 Rscript 在非交互式 bash 模式下返回状态代码

    我正在尝试以 bash 脚本的形式从以非交互方式运行的 Rscript 中获取状态代码 此步骤是较大数据处理周期的一部分 其中涉及 db2 脚本等 所以我在脚本sample sh中有以下内容 Rscript verbose no resto
  • 通过 Lark 解析获取符号

    我正在尝试解析我正在编写的一些伪代码 但在获取符号值时遇到一些问题 它解析成功 但不会返回与 常规 字符相同的值 这是一个例子 gt gt gt from lark import Lark gt gt gt parser Lark oper
  • ASP.NET Core 中的自定义脚手架模板

    现在我知道了如何在 ASP NET Core MVC 中启用脚手架 请参阅在 ASP NET Core 中查看脚手架模板 https stackoverflow com questions 38108163 view scaffold te
  • C# 匿名类型

    据我所知 匿名类型没有自己的预定义类型 类型由编译器在编译时分配给它 并且在编译时分配的类型的详细信息在代码级别无法得知 这些细节是 CLR 本身已知的 我听说 CLR 中的这些匿名类型被视为仅是引用类型 所以我的问题是 在编译时是否会创建
  • React-native-maps 限制平移区域

    有没有办法将地图限制在特定区域 以便平移和缩放包含在该区域内 而外部的所有内容都被锁定 我想限制用户可以在地图上看到的区域 我通过react native maps使用谷歌地图https github com react community
  • Matlab中皮尔逊系数和协方差的计算

    我想计算皮尔逊相关系数 http en wikipedia org wiki Pearson product moment correlation coefficient在Matlab中 不使用Matlab的corr功能 简单地说 我有两个
  • ckeditor 验证空格

    我如何在 ckeditor 上实现验证以防止用户仅添加空格 今天内的任何答复将不胜感激 以下是迄今为止我尝试进行的验证 Save note from ckeditor input save note click function var n
  • django默认身份验证表单显示用户名而不是电子邮件

    我用 django 实现了我自己的用户登录表单 如下所示 from django contrib auth forms import AuthenticationForm class CustomUserLoginForm Authenti
  • Java 如何知道如何迭代数组

    String strs new String 1 2 6 for String s strs System out println s 这是一个关于java内部的问题 在上面的代码示例中 foreach 循环如何计算出数组的长度 数组实际上
  • 如何配置“git diff”以使用 emacs diff [重复]

    这个问题在这里已经有答案了 是否可以配置 git diff 以使用 emacs diff 如果是的话 你能告诉我怎么做吗 谢谢 看这个问题 如何使用视觉差异程序查看 git diff 输出 https stackoverflow com q
  • Cloud Function 会影响 Firebase 存储带宽使用吗?

    I am trying to figure out why firebase storage usage is far above my expectation 我的 Firebase 存储中只有很少的照片文件 只有大约 75 张照片 每张
  • JMSSerializer + 表单/数组

    我是 SF2 社区的新手 所以请放轻松 我遇到了 JMSSerializerBundle 和表单 数组的问题 我花了两天时间尝试自己解决这个问题 但没有成功 我决定将其发布到小组中 我正在构建一个简单的测试应用程序 它可以让我了解这些东西是
  • Spring WebSockets XML 配置不提供brokerMessagingTemplate

    我正在尝试使用 STOMP 将 WebSockets 支持添加到使用 XML 配置的 Spring MVC 应用程序中 到目前为止 一切进展顺利 我已经成功让 WebSockets 服务器进行监听 并且 stomp js 可以连接到它并发送