我正在处理大量的XML架构,它们将Spring Integration上的消息序列化,但有时SI会触发异常,如下所述。
但问题是,在实践中,使用相同的例程创建了数千条消息并通过此集成路径。
有人知道Marshaller(JaxBMarshaller)在序列化消息后抛出此异常的原因。我的意思是,消息是成功生成的,然后在抛出异常后,就像XSD的问题一样,在xsd文件中出现了错误的字符代码"会引起这样的消息吗?我问,因为之前测试过这样的XML序列化,并且没有抛出任何异常。
这是SI(4.1.2)XML片段。
<int:publish-subscribe-channel id="jms0503"></int:publish-subscribe-channel>
<int:chain input-channel="wsAceite0503ResponseChannel" - **WS Response.**
output-channel="jms0503">
<int:transformer ref="saogSaoMsgSOL0503Transformer"
method="apply"></int:transformer>
<int:header-enricher>
<int:header name="protocoloSAOG"
expression="XXXXX"></int:header>
<int:header name="XXXXXX" value="XXXXXXX" />
</int:header-enricher>
<int:transformer id="saogMarsahllerTransformer" ref="saogMarshallingTransformer"></int:transformer>
<int:object-to-string-transformer></int:object-to-string-transformer>
HEre是引发异常的地方。
现在我怀疑是否在模式验证期间抛出了异常(我的猜测不是这种情况)。
<stream:stdout-channel-adapter channel="jms0503"></stream:stdout-channel-adapter>
<int:chain input-channel="jms0503">
<jms:outbound-channel-adapter
connection-factory="solicitacaoConnFactory" destination="XXXXXXX">
</jms:outbound-channel-adapter>
</int:chain>
<int-xml:validating-filter schema-type="xml-schema"
input-channel="jms0503" throw-exception-on-rejection="true"
schema-location="solicitacao/SaogSaoMsgSOL0303.xsd" output-channel="xmlValidationOutputChannel" />
Schema位置似乎是正确的,其他XML使用相同的集成流模式成功验证。
[2015-10-09 15:02:57]ERROR[task-scheduler-5](SaogIntegracaoLogErrorHandler.java:26) - Exception org.springframework.integration.MessageRejectedException: Message was rejected due to XML Validation errors; nested exception is org.springframework.integration.xml.AggregatedXmlMessageValidationException: Multiple causes:
cvc-elt.1: Cannot find the declaration of element 'ns13:XXXXXX'.