Intersult Abraxas ist ein Werkzeug zur Kommunikation mit SOAP und anderen Protokollen. Abraxas besteht im wesentlichen aus folgenden Bestandteilen:
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.
| 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>
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.
String xml = "<java.lang.String>Test</java.lang.String>";
String string = (String)Xml.unmarshall(xml);
System.out.println(string);
Erklärung: Die XML "Datei" wird direkt als String im Java-Code erzeugt und der lokalen Variablen xml zugewiesen. Danach wird mit die Methode marshall der Klasse com.intersult.xml.Xml aufgerufen, welche Strings, Streams und andere Quellen in Java-Objekte umwandelt (sog. Unmarshalling).
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;
}
}
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());