Jul 25
Nach mehreren Bugfixes in Apache Camel ist es mir endlich gelungen Apache Camel als Transport Schicht für Apache CXF zu verwenden. Inzwischen haben die Bugfixes Einzug in Apache Camel 1.4 gefunden. Somit kann Apache CXF mit Camel in einer stabilen Release benutzt werden. Ein Beispiel-Projekt kann hier heruntergeladen werden.
Leider funktioniert bei Einsatz von Apache Camel Transport nicht mit MTOM und WS-Addressing (siehe JIRA Issue CAMEL-726). Der Bug ist jedoch in der aktuellen 1.5-SNAPSHOT Version bereits behoben.
Durch die Kombination von Apache CXF und Apache Camel eröffnet sich eine neue Dimension bezüglich Flexibilität bei der Implementierung von Webservices.
UPDATE: Mein Arbeitskollege Christian Schneider hat dazu ein hervorragendes Tutorial geschrieben. Vielen Dank!
Sep 11
xsd:choice ist ein verbreitetes XML Konstrukt. Das Mapping von xsd:choice auf eine objektorientierte Programmiersprache ist jedoch nicht ganz einfach. Die JAX-RPC Spezifikation für Webservices definiert z.B. kein Mapping von xsd:choice nach Java.
So mappt ein JAX-RPC Codegenerator eine xsd:choices Typdefinition in der Regel diese auf die Klasse javax.xml.soap.SOAPElement, die Teil der SAAJ API ist. Die SAAJ API ist jedoch nicht besonders benutzerfreundlich.
Hat man die Möglichkeit das XML Schema zu verändern, so besteht die Möglichkeit eine benutzerfreundliche API zu generieren in dem man das xsd:choice Konstrukt mit Polymorphismus ersetzt. Russel Butek hat dazu einen guten Artikel mit dem Titel „Use polymorphism as an alternativ to xsd:choice“ verfasst, welcher dieses Vorgehen sehr gut und detailliert erklärt.
Ich habe die XML Schema Definition für den CustomerService Beispiel aus meinen vorgehenden Beiträgen entsprechend um das Element „Payment“ aus dem Artikel von Russel Butek erweitert und mit Apache CXF auch entsprechenden Java Source Code generiert. Das Beispiel steht zum Download bereit.choice» rpc» saaj» schema» SOA» vererbung» webservice» xml»
Letzte Kommentare