[Web Service] Verzicht auf

ratnalein

Mitglied
Hallo zusammen,

ich habe eine Frage bzgl. SOAP-XML-Nachricht, die an meinen Web Service geschickt wird. Ich definiere meine Web Service - Methode wie folgt:
Code:
@WebMethod(operationName = "tueEtwas")
@WebResult(name = "tueEtwasResponse")
public AusgabeKlasse berechneEtwas(@WebParam(name = "Eingabe")Eingabe eingabe) {
    ...
}

Ich lasse die WSDL bzw. XSD vom Applikationsserver erstellen(nach dem Deployment auf den Applikationsserver wird die WSDL und XSD automatisch erstellt).

Ein konkretes XML für den Web Service sieht we folgt aus:
Code:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">

   <soapenv:Header/>

   <soapenv:Body>

        <tueEtwas
	     xmlns:tns="http://ratnalein.de/"
	     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	     xsi:schemaLocation="http://ratnalein.de/ ratnalein.xsd ">
       
             <Eingabe>
          
                    ...
        
             </Eingabe>
   
        </tueEtwas>

    </soapenv:Body>

</soapenv:Envelope>

Wie man sieht, vor dem eigentlichen Input-Parameter(Eingabe) gibt es das Element/Tag "tueEtwas". Ich würde gerne auf dieses Element verzichten, so dass innerhalb des Elements "Body" direkt die Eingabe folgt.

Gibt es eine Möglichkeit mit den Web Service - Java-Annotationen, so dass die generierte WSDL bzw. XSD diese "Hülle" nicht in Betracht zieht? Vielen Dank für Eure Hilfestellungen.

Viele Grüße aus Rheinland,

Eure Ratna
 

turtle

Top Contributor
Ich habe mich ein bisschen in RESTful Web Services mit JAX-RS und Jersey eingearbeitet...
und bin begeistert.

Kein XML-Gefrickel mehr und einfachste Umsetzung.
Vielleicht ist das eine Option?

Du musst dich (natürlich) an die Operationen, die in HTTP definiert sind, halten, also unter anderem Get,Post,Delete. Das sollte aber kein Grundsatzproblem sein.

Folgende Methode wird aufgerufen, wenn an die URL ein Post gemacht wird. Der ankommende Body ist im JSON-Format und die Ausgabe ist XML. Kannst du aber ändern, so wie du das brauchst. Vorteil: Kein unnötiger Ballast, beim JSON-Beispielaufruf ist das der Post-Body
[XML]{
"name": "Turtle",
"age": "23"
}
[/XML]
Java:
	@POST
	@Consumes({ MediaType.APPLICATION_JSON })
	@Produces({ MediaType.TEXT_XML })
	public String consumeJSONObject(JSON json) {
		System.out.println("Consumed json object is : " + json);
		return "<?xml version=\"1.0\"?>" + "<hello> Hello " + json.getName() + ":" + json.getAge()
				+ "Jahre alt</hello>";
	}
 

Ähnliche Java Themen

Neue Themen


Oben