JAX-WS: Ausschließen eines "member / field" in einem Antwortobjekt (WS Response), das vererbt wird?

8

Ich habe einen Webservice, der als Ergebnis der Invokation des Web-Services ein ResponseObject namens " CustomerResponse " zurückgibt. Wenn ich dieses Objekt "von Grund auf" implementiere, funktioniert alles gut: Meine Implementierung enthält in diesem Fall nur alle benötigten "Simple Types" wie Strings, Integers aber KEINE Objektreferenzen / Assoziationen.

Allerdings wollte ich bestehende Objekte "wiederverwenden". Ich habe in meinem Domain-Modell ein " Customer " -Objekt, das in der Anwendung selbst verwendet wird. Anstatt das Customer dummly mehr oder weniger in das "CustomerReponse" -Objekt zu klonen (indem ich manuell alle Mitglieder / Felder manuell neu eingab), wollte ich das CutomerResponse -Objekt auf dem Customer -Objekt durch Erweiterung aufbauen:

%Vor%

== & gt; Das Problem ist, dass CustomerResponse nun einige "interne" Felder enthält, die vom Customer Object geerbt wurden (wie DatabaseID, Security-Stuff), die ich nicht über den Web-Service bereitstellen möchte. Außerdem (und das ist zur Zeit das Hauptproblem ") Customer enthält auch eine Menge" Objektreferenzen / Assoziationen "zu anderen Objekten wie Address , Orders , History , die ich auch nicht über den Webservice bereitstellen möchte (Es scheint, dass Apache CXF den gesamten Objektgraphen "evaluiert" und versucht, sie in das ResponseObject aufzunehmen ...)

== & gt; Ist es möglich, WebService-Response-Objekte auf der Basis vorhandener Objekte zu "erweitern" und einige der "Mitglieder / Felder" des erweiterten Supertyps auszuschließen ? (Also möchte ich einige Mitglieder (wie die DatabaseID) und alle "Objektverknüpfungen" wie (Address / Orders / Histroy) ausschließen. Wie kann ich das mit den Anmerkungen und Prozeduren erstellen?

Vielen Dank !! Jan

    
jan 14.11.2009, 13:45
quelle

3 Antworten

6

Die Annotation @XmlTransient wird verwendet, um Elemente auszublenden, die nicht angezeigt werden sollen. Sie sollten in der Lage sein, diese Mitglieder zu kommentieren, und sie werden nicht gebunden sein. Alternativ können Sie Ihren @ XmlAccessorType in XmlAccessType.NONE und nur spezifisch annotierte Methoden werden an XML gebunden.

    
justkt 18.11.2009, 13:46
quelle
10

In Bezug auf die @ XmlTransient-Annotation habe ich herausgefunden, dass Sie sie in die Getter-Methode des Feldes einfügen müssen, das Sie ausblenden möchten.

%Vor%

Im Beispiel ist "fieldhide" auf dem Dienst xsd nicht sichtbar.

    
Pimentoso 29.01.2013 13:40
quelle
-7

C # löst dieses Problem mit partiellen Klassen. Ich weiß nicht, wie man das mit Jax-ws macht.

    
Bob 19.11.2009 23:27
quelle

Tags und Links