Wie zum extrahieren von JAX-WS @RequestWrapper attribute (oder die vollständige bean)

Ist es möglich, zu extrahieren ein Attribut (als XML-Attribut-Wert) aus einer RequestWrapper Objekt?

In meiner Umsetzung, ich möchte den Wert des Attributs, kann aber nicht Referenz-es mit @WebParam, als dass nur für Elemente, die (ich glaube)

@SOAPBinding definiert ist "Document/Literal/Wrapped"

WSDL (relevante Abschnitte, target-Attribut bei **):

<s:element name="GetStatus">
 <s:complexType>
  <s:element minOccurs="0" maxOccurs="1" name="Entity" type="s0:Entity"/>
**<s:attribute name="Handle" type="s:string"/>
 </s:complexType>
</s:element>
<s:element name="GetStatusResponse">
 <s:complexType>
  <s:sequence>
   <s:element minOccurs="0" maxOccurs="1" name="StatusCode" type="s0:StatusCode"/>
   <s:element minOccurs="0" maxOccurs="1" name="Server" type="s0:Server"/>
  </s:sequence>
 </s:complexType>
</s:element>

<message name="GetStatusIn">
 <part name="parameters" element="s0:GetStatus"/>
</message>
<message name="GetStatusOut">
 <part name="parameters" element="s0:GetStatusResponse"/>
</message>

<portType name="Service">
 <operation name="GetStatus">
  <input message="s0:GetStatusIn"/>
  <output message="s0:GetStatusOut"/>
 </operation>
</portType>

SEI abstrakten Methode (angeben zu können XML-Elemente mit WebParam):

@WebMethod(operationName="GetStatus")
@RequestWrapper(localName=“GetStatus",className="com.example.GetStatus")
@ResponseWrapper(localName=“GetStatusResponse",className="com.example.GetStatusResponse")
public void getStatus(
  @WebParam(name="Entity”)Entity entity,
  @WebParam(name="StatusCode",mode=WebParam.Mode.OUT)Holder<StatusCode> statusCode,
  @WebParam(name="Server", mode=WebParam.Mode.OUT)Holder<Server> server
);

Umsetzung:

@Override
public void getStatus(
  Entity entity,
  Holder<StatusCode> statusCode,
  Holder<Server> server
) { ... }

Es ist klar, wie kann ich Lesen Sie den Wert des @RequestWrapper bean Status (Person via @WebParam), aber gibt es eine Möglichkeit, den Zugriff auf den Wert (Griff) innerhalb Status. WebParam, soweit ich das verstanden habe, unterstützt keine Attribute, nur Elemente.

Einen alternativen Weg zu Fragen/suchen Lösung sein könnte, zu Fragen, wie die komplette bean verwiesen wird, die von RequestWrapper, in diesem Fall GetStatus.

Ich wissen, ob ich den übergang zu Document/Literal/Bare ich kann einfach die Parameter und Rückgabewerte spiegeln die Bohne, aber ich würde es vorziehen, dies zu lösen, mit gewickelt, da alle Informationen Punkte, da dies die am meisten bevorzugte Bindung.

InformationsquelleAutor brianmckenna | 2012-03-30

Schreibe einen Kommentar