Posted: Mon Mar 30, 2009 3:47 am Post subject: Aggregate Reply and Namespaces
Master
Joined: 20 Mar 2008 Posts: 215
Have read most of the namespace relevant info and found nothing that fits my issue.
Have orchestration that has propagation of multiple requests to backend system who in turn replies with SOAP encased response. Each response is then held in the folder by the aggregate reply node, so for instance there are 3 iterations of the folder. In the first incoming response folder the backend has supplied namespace aware elements to construct the response of which one of the elements (matters not where in the response) has a default namespace (i.e xlmns='http//.....blah...blah - NO identity) and for any other subsequent declared namespace assigns a indent (i.e xlmns:a='http://..nextnamespacedecl...) and so on. The problem is and I assume its here is that when the collated reply of my 3 responses is sent to the following node (a compute node in this case) the trace shows an error saying that the (default) namespace has already been defined - that is there are more than one xlmns='http//:....... declarations.
My problem is this namespace construction is not within my control (backend supplies and quite assumes each repsonse is self contained) and apart from me checking each namespace declaration is unique is kinda pants!!!
Is this a broker bug you think as the XML4JC parser quite rightly says you can't have the default namespace declared twice in the same document but it is it that is constructing the doucument. If this is confusing then i can supply some example messages but hopefully it is understandable. thanks.
the trace shows an error saying that the (default) namespace has already been defined - that is there are more than one xlmns='http//:....... declarations.
Please can you take a user trace, and post the relevant part of it here. That way, we get to the see the BIP number and the full text of the error message.
Kimbert - thanks for reply - the trace bit was quite large so here is the Exception piece and a example of the incoming response
<RecoverableException><File>/build/S600_P/src/DataFlowEngine
/ImbComputeNode.cpp</File><Line>464</Line>
<Function>ImbComputeNode::evaluate</Function>
<Type>ComIbmComputeNode</Type>
<Name>O_GENERIC_CNA_CBS_PROPAGATE_INTER2#FCMComposite_1_1.TIS_CBS_ACCOUNT_RELATED_PARTIES_GET_SUB#FCMComposite_1_2</Name>
<Label>O_GENERIC_CNA_CBS_PROPAGATE_INTER2.TIS_CBS_ACCOUNT_RELATED_PARTIES_GET_SUB.SOAP_IXML</Label>
<Catalog>BIPv600</Catalog><Severity>3</Severity>
<Number>2230</Number><Text>Caught exception and
rethrowing</Text><RecoverableException><File>/build/S600_P
/src/DataFlowEngine/ImbRdl/ImbRdlStatementGroup.cpp</File>
<Line>589</Line><Function>SqlStatementGroup::execute</Function>
<Type>ComIbmComputeNode</Type>
<Name>O_GENERIC_CNA_CBS_PROPAGATE_INTER2#FCMComposite_1_1.TIS_CBS_ACCOUNT_RELATED_PARTIES_GET_SUB#FCMComposite_1_2</Name>
<Label>O_GENERIC_CNA_CBS_PROPAGATE_INTER2.TIS_CBS_ACCOUNT_RELATED_PARTIES_GET_SUB.SOAP_IXML</Label>
<Catalog>BIPv600</Catalog><Severity>3</Severity>
<Number>2488</Number><Text>Error detected, rethrowing</Text>
<Insert><Type>5</Type>
<Text>.TIS_CBS_ACCOUNT_RELATED_PARTIES_GET_SUB_SOAP_IXML.Main</Text>
</Insert><Insert><Type>5</Type><Text>23.5</Text></Insert>
<Insert><Type>5</Type><Text>PROPAGATE TO TERMINAL
'out' FINALIZE DEFAULT DELETE NONE;</Text></Insert>
<ParserException><File>/build/S600_P/src/DataFlowEngine
/ImbRootParser.cpp</File><Line>551</Line>
<Function>ImbRootParser::parseNextItem</Function>
<Type>ComIbmAggregateReplyNode</Type>
<Name>O_GENERIC_CNA_CBS_PROPAGATE_INTER2#FCMComposite_1_6</Name>
<Label>O_GENERIC_CNA_CBS_PROPAGATE_INTER2.GENERIC_CNA_CBS_PROPAGATE_2</Label>
<Catalog>BIPv600</Catalog><Severity>2</Severity>
<Number>5902</Number><Text>Exception whilst parsing</Text>
<Insert><Type>5</Type><Text>Root</Text></Insert><Insert>
<Type>5</Type><Text>XMLNSC</Text></Insert><Insert>
<Type>5</Type>
<Text>...........SOME TEXT IN HERE......</Text>
</Insert><ParserException><File>/build/S600_P/src/MTI/MTIforBroker
/GenXmlParser3/ImbGenericXmlParser.cpp</File><Line>350</Line>
<Function>ImbGenericXmlParser::parseLastChild</Function><Type/>
<Name/><Label/><Catalog>BIPv600</Catalog>
<Severity>3</Severity><Number>5009</Number><Text>XML Parsing
Errors have occurred</Text><ParserException><File>/build/S600_P
/src/MTI/MTIforBroker/GenXmlParser3
/ImbGenericXmlAsgardParser.cpp</File><Line>935</Line>
<Function>ImbGenericXmlAsgardParser::error</Function>
<Type>ComIbmAggregateReplyNode</Type>
<Name>O_GENERIC_CNA_CBS_PROPAGATE_INTER2#FCMComposite_1_6</Name>
<Label>O_GENERIC_CNA_CBS_PROPAGATE_INTER2.GENERIC_CNA_CBS_PROPAGATE_2</Label>
<Catalog>BIPv600</Catalog><Severity>3</Severity>
<Number>5004</Number><Text>An error has been reported by the
BIPXML4C component.</Text><Insert><Type>2</Type>
<Text>247</Text></Insert><Insert><Type>5</Type><Text>Null
pointer</Text></Insert><Insert><Type>2</Type><Text>1</Text>
</Insert><Insert><Type>2</Type><Text>168</Text></Insert>
<Insert><Type>5</Type><Text>The attribute 'xmlns' is
already used in element 'GetAccountRelatedPartiesResponse'
</Text></Insert><Insert><Type>5</Type>
<Text>X.IS_CBS_ACCOUNT_RELATED_PARTIES_GET.RESP</Text>
</Insert></ParserException></ParserException></ParserException>
</RecoverableException></RecoverableException>
as you can see in the response there is the GetAccountRelatedPartiesRespons element whic has the default namespace to it - and imagine now 3 x responses.
I can't see anything wrong with that XML document. Even if GetAccountRelatedPartiesResponse was repeated, the scope of the default namespace would only affect that element and its child elements.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum