Wie kann ich festlegen, das der WS-Adressierung, version mit einem JAX-WS-client?

Generiert ich eine SOAP 1.2 web service Clients mit wsimport (JDK 1.7). Ich muss es explizit die Verwendung von WS-Addressing 2004/08 und nicht 2005/08.
Die nächsten, die ich finden konnte für instanciating der Kunde war

import MyService.*;
import javax.xml.ws.BindingProvider;

public class test {

    public static void main(String[] args) {
        MyService service = new MyService();  
        IMyService proxy = service.getMyService(new javax.xml.ws.soap.AddressingFeature(true, true) );  
        ((BindingProvider)proxy).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "https://192.168.0.5:1234/services/MyService");
        proxy.Ping("Foo");
      }
}

Wichtige bit wird

MyService service = new MyService();
IMyService proxy = service.getMyService(new javax.xml.ws.soap.AddressingFeature(true, true));

Leider, diese Ergebnisse in 2005/08-Adressierung. Nicht gemacht, ein argument zu getMyService() dazu führt, dass nicht durch die Verwendung von WS-Addressing.

Nur Beispiele, die ich finden kann Google zwingen, 2004/08-Adressierung verwenden, Axis2 (der ganze Grund, warum ich möchte, JAX-WS ist, sich zu bewegen Weg von Axis2)

Den Unterschied auf der Leitung ist
(2004/08)

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://schemas.xmlsoap.org/ws/2004/08/addressing">
    <s:Header>
        <a:Action s:mustUnderstand="1">http://www.example.com/schemas/service/myservice/IMyService/Ping</a:Action>
        <a:MessageID>urn:uuid:87727401-b1a0-4667-9ef0-c64e58800ff6</a:MessageID>
        <a:ReplyTo>
            <a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address>
        </a:ReplyTo>
        <a:To s:mustUnderstand="1">https://192.168.0.5:1234/services/MyService</a:To>
    </s:Header>
    <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <Ping xmlns="http://www.example.com/schemas/service/myservice">
            <Message>Foo</Message>
        </Ping>
    </s:Body>
</s:Envelope>

(2005/08)

<S:Envelope xmlns:S="http://www.w3.org/2003/05/soap-envelope">
    <S:Header>
        <To xmlns="http://www.w3.org/2005/08/addressing">https://192.168.0.5:1234/services/MyService</To>
        <Action xmlns="http://www.w3.org/2005/08/addressing" xmlns:S="http://www.w3.org/2003/05/soap-envelope" S:mustUnderstand="true">http://www.example.com/schemas/service/myservice/IMyService/Ping</Action>
        <ReplyTo xmlns="http://www.w3.org/2005/08/addressing">
            <Address>http://www.w3.org/2005/08/addressing/anonymous</Address>
        </ReplyTo>
        <MessageID xmlns="http://www.w3.org/2005/08/addressing">uuid:87727401-b1a0-4667-9ef0-c64e58800ff6</MessageID>
    </S:Header>
    <S:Body>
        <Ping xmlns="http://www.example.com/schemas/service/myservice">
            <Message>Foo</Message>
        </Ping>
    </S:Body>
</S:Envelope>

Jemand irgendwelche Ideen hier?

  • Ich Frage mich,... ... sollten Sie sich die Mühe machen mit dabei auf der Anwendungsebene oder würde es mehr Sinn machen, es auf einem ESB (z.B. DataPower) - Ebene und lassen Sie Ihrer Anwendung davon ausgehen, dass die Daten, die er empfängt, sauber (nur Arbeit abnehmen).
InformationsquelleAutor Foran | 2014-06-09
Schreibe einen Kommentar