在查看项目代码中发现,同事写的spring 接收activeMQ信息中的一段代码:
spring 配置片段:
<bean id="topicListener" class="org.springframework.jms.listener.adapter.MessageListenerAdapter">
<constructor-arg ref="topicConsumer" />
<!-- 指定消费消息的方法 -->
<property name="defaultListenerMethod" value="receive" />
<!-- custom MessageConverter define -->
<property name="messageConverter" ref="defaultMessageConverter" />
</bean>
defaultMessageConverter 重写了messageConverter接口,spring 默认的是:
org.springframework.jms.support.converter.SimpleMessageConverter
messageConverter,片段:
fromMessage方法,接受信息根据收到的message类型来进行处理:
// POJO must implements Seralizable
ByteArrayInputStream bis = new ByteArrayInputStream(map.get("POJO"));
ObjectInputStream ois = new ObjectInputStream(bis);
Object returnObject = ois.readObject();
return returnObject;
发现IO操作没有关闭动作。
查api发现:ByteArrayInputStream 关闭 ByteArrayInputStream 无效
ObjectInputStream 关闭输入流。必须调用此方法才能释放与流相关的所有资源。
结论:1.ByteArrayInputStream 、ByteArrayOutputStream不用关闭。
2. ObjectInputStream 、ObjectOutputStream需要关闭。
3.网上粘贴的代码要仔细检查。
分享到:
相关推荐
本文将深入探讨Spring与JMS的整合,特别是MessageConverter的概念及其作用。 一、Spring JMS概述 Spring提供了对JMS的全面支持,包括连接工厂配置、消息生产者、消费者以及消息转换器等。JMS允许应用程序通过消息...
在实际开发中,我们可能还需要自定义MessageConverter,或者调整内置MessageConverter的优先级,以满足特定的项目需求。这可以通过在配置文件中配置`<mvc:message-converters>`来实现。 总的来说,Spring MVC通过其...
在本项目中,我们主要探讨的是如何将Spring Boot与MyBatis、Druid以及自定义消息转换器(MessageConverter)进行集成,以构建一个高效、可扩展的应用程序。Spring Boot以其简洁的配置和快速的开发体验深受开发者喜爱...
<bean id="jsonMessageConverter" class="org.springframework.jms.support.converter.MappingJackson2MessageConverter"> <bean id="messageConverter" class="org.springframework.jms.config....
例如,如果客户端请求JSON,而服务器端返回一个XML对象,`@ResponseBody`会尝试找到适当的`MessageConverter`来完成转换。 4. **异常处理** 当`@ResponseBody`方法抛出异常时,Spring MVC会自动捕获并处理这些异常...
4. **MessageConverter**:Spring AMQP提供了一系列的MessageConverter实现,如Jackson2JsonMessageConverter,用于在消息对象与AMQP Message之间进行转换,确保数据在传输过程中的正确性。 在源码中,我们可以看到...
MessageConverter的作用就是将这些格式化的数据转化为Java对象,反之亦然。 请求体通常包含JSON、XML或其他格式的数据,而查询参数和表单参数则以不同的方式存在。Content-Type头部用来指示请求体或响应体的数据...
3. **MessageConverter**: 当需要在发送和接收消息时进行类型转换时,`MessageConverter`接口就派上用场了。例如,我们可以使用`SimpleMessageConverter`,它默认支持字符串和byte数组的转换。 在实际应用中,我们...
在IT行业中,日志记录是系统监控和故障排查的关键环节,但同时也涉及到用户隐私保护的问题。日志脱敏就是一种确保敏感数据在日志中不被泄露的技术手段。本资源包含的是关于`SpringMVC`、`Log4j2`、`Logback`以及`...
同时,Spring JMS 也提供了 MessageConverter 抽象,以在 Java 对象和 JMS 消息之间进行转换。 在 Spring JMS 中,还提供了管理 JMS 目标的不同策略,比如针对 JNDI 中保存的目标的服务定位器。同时,Spring JMS 也...
Spring MVC在接收到请求时,会通过MessageConverter链来处理请求体。StringHttpMessageConverter是这个链上的一员,它会检查请求头中的Content-Type字段来确定数据的字符编码。如果找不到合适的编码,Spring MVC会...
public Jackson2JsonMessageConverter producerJackson2MessageConverter() { return new Jackson2JsonMessageConverter(); } } ``` ##### 2. 生产者的实现 - **创建消息生产者** (`MessegeProducer.java`):...
`MessageConverter`是另一个扩展点,例如`SimpleRabbitListenerContainerFactory`的子类可以重写`setMessageConverter`方法来设置自定义的转换器,如`Jackson2XmlMessageConverter`、`Jackson2JsonMessageConverter`...
如果需要自定义消息的序列化和反序列化,可以实现 `MessageConverter` 接口,比如使用 Jackson JSON 支持: ```java @Component public class JsonMessageConverter extends AbstractMessageConverter { ...
对于日志脱敏的方式有很多,常见的有①使用conversionRule标签,继承MessageConverter②书写一个脱敏工具类,在打印日志的时候对特定特字段进行脱敏返回。 两种方式各有优缺点:第一种方式需要修改代码,不符合开闭...
public MqttMessageConverter messageConverter() { return new DefaultMqttPahoMessageConverter(); } } ``` 接下来,我们需要定义一个MQTT消息监听器,用于接收并处理来自MQTT的消息。创建一个名为`...
通过自定义`MessageConverter`或者调整Spring的配置,我们可以定制Jackson的行为,比如改变默认的日期格式,或者添加自定义的序列化模块。 在实际开发中,`jackson-core-2.5.0.jar`的使用往往结合`jackson-databind...
例如,可以创建一个支持JSON的`Jackson2JsonMessageConverter`,或者根据业务需求实现自定义的转换逻辑。 此外,项目可能还涉及到`AmqpTemplate`的扩展,以实现更高级的功能,如延迟消息、优先级消息或者死信交换等...
为了在Spring MVC中处理JSON,我们需要在配置文件中启用`@EnableWebMvc`或`<mvc:annotation-driven>`,这会自动配置`MessageConverter`,包括处理JSON的`MappingJackson2HttpMessageConverter`(如果已经添加了...
通过`MessageConverter`,我们可以将8583报文的二进制数据转换为Java对象,方便业务逻辑处理。此外,Spring的`WebSocket`和`WebSocketContainer`组件也可用于更高级的WebSocket通信,但此处可能是基于简单TCP Socket...