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-idcom.intersult
artifact-idabraxas
version1.3-SNAPSHOT

The Maven Plugin is accessible under:

group-idcom.intersult
artifact-idabraxas-maven
version1.3-SNAPSHOT

The Remote-Service:

group-idcom.intersult
artifact-idabraxas-service
version1.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());