2016-06-22 3 views
0

Ich habe eine Integration mit einigen Strömungen und JAXBcontext erklärte wie dieseMule jaxb auf Objekt-Transformationen zu falschem Objekt

<mulexml:jaxb-context name="JaxbContext" packageNames="se.razorlib.SystemAProduct:se.razorlib.SystemAPurchase:se.razorlib.SystemAOrder"/> 

In einem meinem Strom I XML-Transformation für den Kauf und in einem anderen XML zu bestellen, die sehr beliebt sind ähnliche Objekte. jedoch in der Orderflow JAXB meine XML transformiert PurchaseObject statt OrderObject, was natürlich wirft mir einen Fehler:

The object transformed is of type: "SimpleDataType{type=se.razorlib.SystemAPurchase.Header, mimeType='*/*', encoding='null'}", but the expected return type is "SimpleDataType{type=se.razorlib.SystemAOrder.Header, mimeType='*/*', encoding='null'}" 

Dies ist meine Konfiguration, wie kann ich auf die „richtige“ Objekt eine tranfsformation zwingen?

<file:inbound-endpoint path="C:\temp\OrderfileIn" responseTimeout="10000" doc:name="FileIn"/> 
<mulexml:jaxb-xml-to-object-transformer jaxbContext-ref="JAXB_Context" doc:name="XML to JAXB Object" returnClass="se.razorlib.SystemAOrder.Header"/>  
<custom-transformer returnClass="se.razorlib.SystemBOrder.SalesOrder" encoding="UTF-8" class="se.didriksson.Transformer.Map2SystemBOrder" doc:name="Map2B"/> 

Antwort

1

Um die richtige Bean-Klasse wählen Sie die

@XmlRootElement(name = "Order") 

Statt Auftrag zu vergeben haben müssen Sie das Root-Element Ihrer xml setzen kann.

Ein weiterer Punkt ich auch vor einem Problem mit mule 3.7, die sie nicht lesen package.info Datei in dem Paket ist

+0

Dank für die Beantwortung, vielleicht, das ist mein Problem, da sowohl Kauf und Bestellung erhält den gleichen Namen von JAXB "@XmlRootElement (Name =" Kopfzeile ")". Kann ich sie einfach in "Bestellung", "Kauf" ändern? – elwis