Abraxas ist das Produkt 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 direkt aus dem Intersult Maven Repository bezogen werden. Für Rechte und Einsatz in kommerziellen Anwendungen nehmen Sie bitte Kontakt 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 und Unmarshalling#
Der XmlMarshaller ist ein sehr flexibles Werkzeug, das über die Klasse com.intersult.xml.Xml angesprochen wird. Diese Klasse stellt statische Methoden für das Umwandeln von Java-Objekten in XML (marshal) und von XML in Java-Objekte (unmarshal) zur Verfügung. Die Klasse ist dafür ausgelegt, sehr einfach genutzt zu werden.Anwendung#
Es braucht sich um keine speziellen Objekte handeln, sogenannte Pojos (Plain Old Java Objects) sind ausreichend, also keine besondere Superklasse oder Interface notwendig.Das Marshalling und Unmarshalling stellt ein Default-Verhalten zur Verfügung, das einen sehr weiten Bereich von denkbaren Java-Objekten abdeckt. Darüber hinaus besteht die Möglichkeit durch einige Annotations das Marshalling zu steuern.
Datentypen#
Neben primitiven Datentypen und verschachtelten Typen serialisiert der Marshaller auch Arrays, Lists und Maps.Folgendes Code-Beispiel zeigt einen Unmarshal-Marshal-Roundtrip:
Foo objectInput = new Foo(); objectInput.setValue("Test-Wert"); String xml = Xml.marshall(objectInput); System.out.println(xml); Foo objectOutput = (Foo)Xml.unmarshall(xml); System.out.println(objectOutput.getValue());
Mit Foo.java:
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);
Web Service (SOAP)#
Der Client-Generator für SOAP-Service verwendet intern den Intersult Xsd-Generator, der auch eigenständig nutzbar ist. Damit ist es möglich, Remote-Aufrufe über Intra- und Internet abzuwickeln. Eine große Zahl von Services, die auf unterschiedlichsten Technologien (auch nicht-Java) basieren, verwenden SOAP. Damit steht eine sehr große Menge an Services und Providern zur Verfügung.Um einen Web-Service auf SOAP-Basis anzusprechen, braucht man zunächst Java-Klassen, die die entsprechenden Daten übertragen. Diese werden aus der sogenannten WSDL (Web Service Description Language) generiert, die der SOAP-Service zur Verfügung stellt. Darin ist beschrieben, welche Methoden der Service anbietet und welche Objekte für die Kommunikation verwendet werden.
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> <version>1.3-SNAPSHOT</version> <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:
GlobalWeatherSoap soap = new GlobalWeatherSoap(); GetWeatherResponse weather = soap.getWeather("nuernberg", "germany"); System.out.println(weather.getGetWeatherResult());