[Abraxas] ist das [Produkt|Intersult Produkte] der [Intersult] für den Umgang mit Remote-Verbindungen und -Services im Bereich XML und [Java]. [Abraxas] ist ein jahrelang entwickeltes und erprobtes Produkt, auf das mehrere renommierte Unternehmen setzen, weil es eines der führenden XML- und SOAP-Werkzeuge darstellt. Das XML-Paket kann unter [Maven 2|Maven] direkt aus dem [Intersult Maven Repository] bezogen werden. Für [Rechte|Rechtliches] und Einsatz in kommerziellen Anwendungen nehmen Sie bitte [Kontakt|Intersult] zu uns auf. !Maven2/3 The __XML Tools__ are accessible using the following ids: |group-id|com.intersult |artifact-id|abraxas |version|1.3-SNAPSHOT The __Maven Plugin__ is accessible under: |group-id|com.intersult |artifact-id|abraxas-maven |version|1.3-SNAPSHOT The __Remote-Service__: |group-id|com.intersult |artifact-id|abraxas-service |version|1.3-SNAPSHOT Simply add the plugin repository to your pom.xml to allow Maven download the plugin: {{{ <project> ... <pluginRepositories> ... <pluginRepository> <id>intersult-repository</id> <name>Intersult Repository</name> <url>https://intersult.com/svn/public/maven</url> </pluginRepository> ... </pluginRepositories> ... </project> }}} !Marshalling Der XmlMarshaller ist ein sehr flexibles Werkzeug für die Umwandlung von Java-Objekten in XML. Es braucht sich um keine speziellen Objekte handeln, sogenannte Pojos sind ausreichend. Zusätzlich besteht die Möglichkeit durch einige Annotations das Marshalling zu steuern. Neben primitiven Datentypen und verschachtelten Typen serialisiert der Marshaller auch Arrays, Lists und Maps. Der XmlUnmarshaller wandelt serialisierte XML-Dateien zurück in Java-Klassen. Das Unmarshalling ist dabei genauso unkompliziert wie das Marshalling. Pojos sind ausreichend, mit Annotationen können zusätzliche Features gesteuert werden. Folgendes Code-Beispiel zeigt einen Unmarshal-Marshal-Roundtrip: {{{ String stringInput = IOUtils.toString(getClass().getResourceAsStream("Foo.xml")); Foo foo = (Foo)MarshalUtils.unmarshall(stringInput); String stringOutput = MarshalUtils.marshall(foo); }}} Mit Foo.xml: {{{ <?xml version="1.0" encoding="UTF8"?> <com.intersult.xml.Foo value="Ein Wert"/> }}} und Foo.java: {{{ package com.intersult.xml; public class Foo { private String value; public String getValue() { return value; } public void setValue(String value) { this.value = value; } } }}} Ein weiteres Beispiel für Unmarshalling: {{{ String input = "Test"; String xml = "<java.lang.String>" + input + "</java.lang.String>"; String output = (String)MarshalUtils.unmarshall(xml); }}} Der WSDL-Generator verwendet intern den [Intersult Xsd-Generator]. !Web Service Die Generierung von Web Services aus WSDL-Dateien baut zum Teil auf der Generierung von XML-Schemata aus XSD-Dateien auf. Durch folgende Konfiguration kann ein Web Service Client generiert werden: {{{ <project> ... <build> ... <plugins> ... <plugin> <groupId>com.intersult</groupId> <artifactId>com.intersult.maven</artifactId> <executions> <execution> <goals> <goal>generate-ws</goal> </goals> <configuration> <services> <service> <outputPath>${project.build.directory}/generated/weather</outputPath> <wsdl>http://www.webservicex.net/globalweather.asmx?WSDL</wsdl> <packageName>net.webservicex.globalweather</packageName> </service> </services> </configuration> </execution> </executions> </plugin> ... </plugin> ... </build> ... </project> }}} Der Global Weather Service generiert einen Service, der durch folgenden Code ansprechbar ist: {{{ GetWeatherResponse weather = new GlobalWeatherSoap().getWeather("nuernberg", "germany"); System.out.println(weather.getGetWeatherResult()); }}}