java - Spring Integration 解码变压器 Jaxb2Marshaller 性能问题

标签 java spring jaxb marshalling spring-integration

目前我们的应用程序没有利用 spring 集成提供的 xml 转换器。相反,它创建一个 JaxbContext,然后从该 JaxbContext 创建一个 JAXB 解码器/编码器池,并将它们连接到服务激活器中。我们创建池是为了避免为每个操作创建编码器和反编码器的成本。

作为重构工作的一部分,我们决定应该使用 xml 转换器。在尝试实现时,我们发现 org.spring.oxm.Marshaller 实现不支持编码器/解码器池,因为 Spring 集成的 UnmarshallingTransformer 需要 org.spring.oxm.Marshaller 的实现。当调用 unmarshal 方法时,org.spring.oxm.Marshaller 的每个实现都会创建一个新的 javax.xml.bind.Unmarshaller

最后,我为我的问题提供了足够的背景信息。为每个解码操作创建一个新的解码器不是性能问题吗?根据jaxb ri documentation它确实会影响性能。作为反驳论点,jaxb 项目的领导 states它们很轻量

最佳答案

也许,将编码器移至 java 是一个好主意。对不同的对象和验证处理程序使用 Marshaller 非常繁重,并且是最消耗内存的怪物之一。

关于java - Spring Integration 解码变压器 Jaxb2Marshaller 性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27946252/

相关文章:

java - 动态加载类并获取带注释的类

java - 是否可以在logback中将日志写入scr/main/resources?

java - Java/Android 中现有对象的短期引用的开销

java - NIO2和 channel 中使用的字符集

java - Spring Security 3 - CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON 在哪里?

spring - 根据 Spring 4.1.6 文档 Autowiring byType

java - 当辅助数据源数据库连接不可用时,Spring Boot 无法启动

java - JAXB 似乎正在重新编码新行字符

java - 使用 JAXB 编码时如何包含 SOAP 信封标签?

java - @XmlElementWrapper 和@XmlElement 无法使用 Jackson 进行反序列化