In meiner Route versuche ich eine eingehende XML-Nachricht zu entpacken. Wenn ich jedoch den Code ausführe, überspringt er die Ausführung des .processors, und ich kann den tatsächlichen Fehler nicht herausfinden (da er keinen gibt).Konnte mit jaxb in Kamel nicht abmarshalen. Prozessor wird nicht aufgerufen
Der Code:
package nl.hari.local.cust;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
import org.apache.camel.CamelContext;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.model.dataformat.JaxbDataFormat;
public class XMLtoObject_Camel {
public static void main(String[] args) throws Exception {
CamelContext context = new DefaultCamelContext();
JaxbDataFormat jaxbDataFormat = new JaxbDataFormat();
JAXBContext con = JAXBContext.newInstance(Address.class);
context.addRoutes(new RouteBuilder() {
@Override
public void configure() throws Exception {
from("file://C:/Hari/TstFolder/"
+ "?noop=true" + "&autoCreate=false" + "&flatten=false" + "&delete=false"
+ "&bufferSize=128")
.unmarshal(jaxbDataFormat)
//Doesn't invoke processor - start
.process(new Processor(){
public void process(Exchange exchange) throws Exception {
Address add = (Address) exchange.getIn().getBody();
System.out.println("city is" + add.getCity());
}
});
//Doesn't invoke processor - End
}
});
}
}
Dies ist das Schema ich verwende. Der XML-Code, den ich zum Testen verwende, wird in Eclipse generiert. Dies sind auch die JAXB-Klassen.
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.hari.nl/Address"
xmlns:tns="http://www.cimt.nl/Address"
elementFormDefault="qualified">
<element name="address">
<complexType>
<sequence>
<element type="string" name="city"/>
<element type="string" name="country"/>
</sequence>
<attribute type="byte" name="id"/>
</complexType>
</element>
</schema>
Der Link unten enthält Screen Grab von Projektstruktur http://i.stack.imgur.com/4IWhD.png
JAXB generierte Klassen sollten ObjectFactory haben. Ich sehe es nicht in Ihrer Projektstruktur! –
Ich habe das Bild wie vorgeschlagen aktualisiert. Nach dem Einfügen des Snippets kann ich es immer noch nicht in den Prozessor bringen. Ich habe den Code im Git-Repository mit den Änderungen aktualisiert, wie empfohlen, als Referenz. https://github.com/navigator007/MyRepo.git –
Haben Sie es erneut versucht. Hat es funktioniert!? –