WSDL: Wie definiert man eine Nachricht ohne Übergabeparameter?

Status
Nicht offen für weitere Antworten.

pocketom

Bekanntes Mitglied
Simple Frage:


Wie definiere ich in WSDL eine Nachricht bzw. Operation die keinen Übergabeparameter hat? Allein durch den Aufruf der Servicemethode ist in diesem Falle klar das nur etwas zurückgeliefert werden muss. Ich suche einen XSD-Typ analog zu NULL oder NIL. type oder element weglassen oder leer lassen geht leider ja auch nicht...

Code:
<wsdl:message name="SimpleRequest">
        <wsdl:part name="parameters" type=""/>
</wsdl:message>

Entstehen soll eine Nachricht (bzw. Operation) die nur etwas zurück gibt, also das Service Interface welches von WSDL2Java generiert wird soll z.B. so aussehen:

Java:
 public SimpleRequestResponse sendSimpleRequest();
 

SebiB90

Top Contributor
Man kann ja aus java automatisch wsdl erzeugen. Und wenn man das macht, wird einfach ein selbst definierter Typ angegeben. Dieser ist ein complexType mit einer leeren sequenz.
[XML]<xs:complexType name="test">
<xs:sequence />
</xs:complexType>
...
<message name="test">
<part name="parameters" element="tns:test" />
</message>

[/XML]
 

pocketom

Bekanntes Mitglied
Super danke. Ich bastele mir also quasi mein eigenes NULL bzw. void. :)

Code:
<xs:complexType name="void">
  <xs:sequence /> 
</xs:complexType>
 

Niki

Top Contributor
Schreibst du die wsdl selber? Warum baust du nicht anhand eines Interfaces dein Gerüst und lässt dann aus dem Interaface die wsdl Datei generieren?
 

pocketom

Bekanntes Mitglied
Ja, wir schreiben die WSDLs selber. Das Gerüst bzw. unser Business Object Modell wird in das jeweilige WSDL als XML Schema importiert. Die Pflege über XSD ermöglicht es hierbei allen beteiligten Instanzen am terativen Modellierungsprozess teilzunehmen. Wir gehen also nach dem Contract-First Prinzip vor.

Habe nun also das "void" Objekt als ComplexType angelegt wie oben beschreiben.

Resultat:

Java:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "void")
public class Void {

}
Das ServiceInterface sieht dann so aus :)
Java:
public MyResult sendSimpleRequest(Void parameter);

Lieber wäre mir jedoch ....
Java:
public MyResult sendSimpleRequest();
 
Zuletzt bearbeitet:

mvitz

Top Contributor
Kenne mich nicht so super mit WSDL aus, aber bei mir siehts atm generiert so aus:

[XML]...
<element name="getVersion">
<complexType/>
</element>
<element name="getVersionResponse">
<complexType>
<sequence>
<element name="getVersionReturn" type="xsd:string"/>
</sequence>
</complexType>
</element>
...
<wsdl:message name="getVersionResponse">
<wsdl:part element="impl:getVersionResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="getVersionRequest">
<wsdl:part element="impl:getVersion" name="parameters"/>
</wsdl:message>
...
<wsdl:eek:peration name="getVersion">
<wsdlsoap:eek:peration soapAction=""/>
<wsdl:input name="getVersionRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:eek:utput name="getVersionResponse">
<wsdlsoap:body use="literal"/>
</wsdl:eek:utput>
</wsdl:eek:peration>[/XML]

Im Interface:
Java:
public String getVersion();
 

pocketom

Bekanntes Mitglied
ok,

meins sieht ja ein bischen anders aus:

[XML]
<xsd:complexType name="void">
<xsd:sequence/>
</xsd:complexType>
[/XML]
[XML]
<element name="getVersion">
<complexType/>
</element>
[/XML]

Ich probiers mal mit Element, vielleicht lässt sichs so irgendwie vermeiden das überhaupt eine Klasse namens "Void" (grauselig...) erzeugt wird
 
Zuletzt bearbeitet:

pocketom

Bekanntes Mitglied
Also,

[XML]
<xsd:complexType name="void">
<xsd:sequence/>
</xsd:complexType>
[/XML]

erzeugt natürlich auch ein void Objekt. Irgendwie kann ichs grad nicht ganz glauben das die W3C Leute in Ihrer Schemabeschreibung ein NULL oder NIL vergessen haben ???
 

SebiB90

Top Contributor
Also wie gesagt, wenn du eine methode hast wie
Java:
public MyResult sendSimpleRequest();
und java to wsdl machst, dann kriegst du so ne schema datei raus, die ich dir gezeigt habe und es funktioniert dann auch ohne parameter die methode aufzurufen.
 

pocketom

Bekanntes Mitglied
Hmm, andersrum scheints wohl nicht zu klappen. JAVA2WSDL hilft mir leider nichts da unser Objektmodell zentral in den XSD Schemas gepflegt wird. Kann also nur die Contract-First Methode anwenden leider. Kennt jemand evtl. noch eine Möglichkeit um von der WSDL SEite aus ein NULL;NIL,VOID oder whatever-empty zu definieren?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P WSDL Generierung mit Axis 2 falsch? SOA 3
D [SOAP] wsdl & maven & java 1.8 SOA 6
M Fehlermeldung beim Einbinden der wsdl in SoapUI invalid__wsdl SOA 10
N WSDL verändern der deploy loacation SOA 2
B Was ist falsch an meiner WSDL Datei? SOA 2
Z WSDL, Apache CXF und soapUI SOA 9
N Webservice Einbinden wsdl SOA 7
E WSDL Exception mit SOAPUI SOA 4
J Wie kann ich meine WSDL Datei kommentieren? SOA 2
G WSDL Java C# SOA 8
R JAXB bzw. JAX-WS WSDL-Generierung SOA 2
G WebService WSDL SOA 3
B WSDL-Datei Funktionsnamen falsch SOA 2
G WSDL namespace schemaLocation SOA 2
G WebService mit wsdl erstellen SOA 4
H Axis2 dynamische URL zu WSDL SOA 2
E wsdl into Java-Klassen Maven-Plugin SOA 2
N Java -> WSDL char mit max-Length SOA 5
AndyHa XSD in WSDL wird nicht kompiliert SOA 4
G Stub generieren (WSDL=Axis1.4) (WSDL2JAVA=Axis2) SOA 11
S WSDL xml invalid SOA 1
N Request-XML-String -> AXIS2 -> WSDL-Check -> Respon SOA 2
I SOAP WSDL und UDDI SOA 12
L webservice frage (eclipse/wtp, wsdl) SOA 12
B REST - es gibt eine REST API, wie mache ich nun in JAVA weiter? SOA 8
M Fehler: Dynamic Web Project in eine .war file exportieren SOA 2
A Restful wird gestoppt, sobald eine Exception geworfen wird SOA 11
R Wie verschicke ich serverseitig eine Nachricht an client SOA 2

Ähnliche Java Themen

Neue Themen


Oben