2009-04-10 4 views
4

Welche Java SOAP XML-Objektserialisierungsbibliothek empfehlen Sie für Java-Objektaustausch mit anderen Plattformen/Sprachen (.NET, Delphi)?Welche SOAP-XML-Objekt-Serialisierungsbibliothek für Java würden Sie empfehlen?

Kommunikationsszenarien könnte wie folgt aussehen:

  • Java-Objekt Schriftsteller -> SOAP XML-Text -> .NET oder Delphi Objekt Leser
  • .NET oder Delphi Objekt Schriftsteller -> SOAP XML-Text -> Java Objekt Leser

ich weiß, es ist die XStream XML-Serialisierung Bibliothek und JSON als alternative Lösungen, aber seit Delphi und .NET haben eingebaute Unterstützung für serialisierte Objekte XML SOAP, dies mit Unterstützung eine ‚standardisierte‘ Art und Weise böte für erweiterte Funktionen wie verschachtelte Objekte, Arrays und so weiter.

Edit: Inzwischen fand ich JAXB - (https://jaxb.dev.java.net/), JAXMe und JiBX - Bindung XML Java-Code (http://jibx.sourceforge.net/). Sie generieren jedoch standardmäßig kein serialisiertes SOAP-XML.

Eine mögliche Lösung wäre eine Webdienstbibliothek, die ohne HTTP-Server ausgeführt werden kann und eine einfache Dateischnittstelle für den SOAP-XML-Inhalt bietet (keine vollständige Anforderung, sondern nur ein serialisiertes Objekt). Achse 2 und CXF sehen sehr interessant aus.

+0

Kennen Sie diesen Artikel? http://java.dzone.com/announcements/asynchronous-object-exchange –

Antwort

5

Ich bevorzuge JAX-WS (mit JAXB 2.1 Datenbindung) über die anderen Bibliotheken, die ich verwendet habe (JAX-RPC, Achse 1 und 2, aber nicht XFire). Die JAXB 2-Datenbindung verwendet Generics, was eine angenehme Zuordnung von Eigenschaften mit einem maxoccurs> 1 ermöglicht. JAX-WS selbst ist einigermaßen gut dokumentiert und bietet eine einigermaßen gute API. Die Methoden- und Parameteranmerkungen können in einigen Fällen etwas außer Kontrolle geraten - XML-Hölle in Annotationsform. Es ist normalerweise nicht so schlimm.

Einer der netten Aspekte des JAX-WS-Stacks ist das Projekt Metro, das Sun mit Microsoft entwickelt hat und gut mit der Web-Service-Unterstützung .NET 3.0 interagiert und so MTOM in einer praktikablen Art und Weise implementiert.

+0

+1 für JAX-WS und JAXB. Manchmal muss man wirklich mit den Anmerkungen experimentieren, aber am Ende war ich wirklich zufrieden mit dem Ergebnis –

0

Die Standardbibliothek dafür wäre wahrscheinlich Apache Axis 1. Ich würde empfehlen, axis2 anstelle von Achse 1.4 zu verwenden - obwohl es ziemlich gut funktioniert.

Bedenkt, dass all die SOAP-Erweiterungen den Traum von Interoperabilität genau das machen ... ein Traum.

3

Zusätzlich zu Axis2, das in Ordnung ist, Suns JAX-WS (Version 2) und Apache CXF (gebraucht XFire) sind es wert, zu überprüfen, es ist Ihre Sache. CXF ist vielleicht der reifste der 3, also ist das mein Favorit, aber alle 3 sind ziemlich gut.

+0

+1 für axis2, -1 für jax-ws –

4

Ich würde CXF empfehlen. Es ist ein sehr guter Services-Stack und beinhaltet JAXB-Datenbindung und JAX-WS-Unterstützung. Vielleicht möchten Sie sich eine Open-Source-Integrationsplattform wie Mule ansehen, die CXF (unterstützt auch Axis und XStream) enthält, wenn Sie erweiterte Transformation und Routing Ihrer Nachrichten benötigen. Es ist leichtgewichtig und kann ohne einen Anwendungsserver eingebettet oder ausgeführt werden.

+0

CXF ist momentan mein Favorit, neu aber sehr funktionsreich – mjn

+0

Viel einfach zu bedienen, und man kann sich einfach auf sein Java konzentrieren Code und lassen CXF mit Web-Service-Twaddle umgehen. – Martlark

0

Ich denke, Sie haben Ihre eigene Frage beantwortet.

XStream (Ausgabe als JSON) ist eine nette saubere Lösung. Wenn Sie Alias-Typen verwenden, erhalten Sie ein sauberes Ausgabeformat. Danach spielt es keine Rolle, welchen SOAP-Stack Sie verwenden, solange er mit Delphi/.NET kompatibel ist.

+0

würde ich dagegen empfehlen. XStream ist eine großartige Bibliothek, um POJOs als XML zu serialisieren, aber nicht, wenn man SOAP verwenden möchte (dasselbe gilt natürlich auch für JSON). – StaxMan