2009-04-07 10 views
0

Wir arbeiten derzeit mit einem vom Anbieter bereitgestellten WSDL-Schema, das sehr umfangreich ist. Der Bindungsstil ist RPC. Soweit ich weiß, ist Axis 1.x das einzige Java-Tool, das RPC-WSDL-Definitionen unterstützt. Bitte korrigiere mich, wenn ich falsch liege.Wie Sie WSDL2Java auflösen, indem Sie einen statischen Block erstellen, der größer als 64 KB ist?

WSDL2Java erzeugt einen Service-Namen Skeleton.java-Datei, die einen statischen intialisation Block 1.3Mb in Größe hat - wesentlich größer als Java Grenze von 64 KB.

Vorausgesetzt, dass wir die Definition der Schnittstelle nicht ändern können, wie denken Sie, sollten wir fortfahren?

Unsere Optionen, wie ich sehen, wie sie sind:

  • Pause bis die erzeugte statische Block
  • die WSDL-Pause (nicht sicher, ob das möglich ist, ohne die Schnittstelle zu verändern)
  • Flecken der Achse WSDL2Java Code

Irgendwelche anderen Ideen?

+0

Yo, noch einmal meine alte SO-Aktion. Wie auch immer, da wir den Anbieter nicht dazu bringen konnten, seine beschissenen SOAP-Tools zu modifizieren, schrieb ich ein Perl-Skript, um den statischen Initialisierungsblock der generierten Java-Klasse in kleinere Stücke zu zerlegen. Wahnsinnig. –

Antwort

1

Sehen Sie diese article, die einige Anweisungen gibt, wie Sie eine RPC-WSDL in ein Dokument konvertieren können. Ich empfehle das zuerst zu versuchen.

Auch haben Sie wahrscheinlich eine RPC/codierte WSDL (die übrigens nicht WS-I entspricht). JAXWS unterstützt nur RPC/Literal. Also jedes Framework (wie CXF oder Axis2) wird es unterstützen. Sie können also auch versuchen, die WSDL in RPC/Literal zu konvertieren.

CXF hat eine tool, die die Arbeit für Sie erledigen könnte.

Wie auch immer, ich empfehle, die WSDL in eine neuere Form zu konvertieren. Dies wird Ihr Leben sowohl für die Server- als auch für die Client-Implementierung erleichtern. Ich glaube nicht, dass es sich lohnt, mit Axis1 zu kämpfen. Selbst das manuelle Schreiben und Parsen der SOAP-Nachrichten könnte einfacher sein.

1

Wenn sich Ihr wsdl wahrscheinlich häufig ändert, könnte es sich lohnen, den wsdl2java-Code zu patchen, ansonsten würde ich die erste Option wählen.

Verwandte Themen