2

我想将使用 Springs 从对象生成的 XML 发送Jaxb2marshallerjmsTemplate.convertAndSend(object)oracle 队列 (AQ)。出于某种原因,当我发送消息时,将 null 插入到 oracle 队列中。当我从该对象类中删除一些字段或这些字段为空时 - 消息正常传递。随着这些字段的返回 - 再次为空。调试时,我看到形成了正确的 xml 消息,但不知道为什么数据库中有 null。没有抛出异常(或者至少我找不到它们)。有任何想法吗?

谢谢!

4

1 回答 1

2

这个问题与 JAXB 或 Spring 无关,它是 oracle 队列的类型。它的类型是SYS.AQ$_JMS_MESSAGE只能接收类型的消息VARCHAR2,在java中最大等值是500个符号String。什么时候String大小超过 500 个符号时,null 被排队。

解决方案是将 AQ 的类型更改为SYS.XMLTYPE(这种类型的队列最多可以接收 4GB 的 XML)。当然,消息发送方式也得修改。在发送之前,String必须将 XML 转换为XMLType.

于 2013-01-14T18:40:56.860 回答