Axis2 SOAP fault beim client abfangen

Sleepwalker

Grünschnabel
Hi,

ich weiß nicht, wie ich das Problem anders benennen sollte. Es geht um folgendes:

Ich spreche einen Web Service über Axis2 mit RAMPart an. Das Databinding ist auf xmlbeans gesetzt und der Aufruf ist synchron. RAMPart funktioniert soweit. Der Aufruf des Web Services ist wie folgt:
Code:
PutMessageResponseDocument response = stub.putMessage(putMessageDocument, payloadManifestDocument, id);
Nun bekomme ich aber einen Axis fault zurück.
Code:
catch (AxisFault ex) {
    System.err.println("AxisFault!");
    System.err.println("Message: " + ex.getMessage());
    System.err.println("Fault Code: " + ex.getFaultCode());
    System.err.println("Details: " + ex.getDetail());     
    if (ex.getFaultMessageContext() != null) {         
        System.err.println("Envelope: " + ex.getFaultMessageContext().getEnvelope().toString());
}

Mein Problem ist, dass ich nicht an die Nachricht selbst herankomme. Ich möchte den Quellcode des Stubs nicht verändern, sondern das Objekt in der Hand haben und ausgeben können.

Ich bekomme aber generell nur das hier als Ausgabe:
Code:
AxisFault!
Message: error: The document is not a PutMessageResponse@http://www.foo.de/foo: document element mismatch got Fault@http://schemas.xmlsoap.org/soap/envelope/
Fault Code: null
Details: null

In der Nachricht selbst steht aber noch mehr drin (wenn ich den Quellcode des Stubs ändere):
Code:
Verschlüsselungskram
...
<soapenv:Fault>
<faultcode>soapenv:Client</faultcode>
<faultstring>Relationship not exists</faultstring>
<detail><ErrorMessage>Blablabla</ErrorMessage></detail>
</soapenv:Fault>
</soapenv:Body>
</soap:Envelope>

Wie komme ich da ran? Mir ist klar, dass das kein PutMessageDocument sondern ein Fault ist :\ Aber der Aufruf des Web Services gibt nunmal nur ein PutMesaageDocument zurück. Oder wie kann ich das sonst angehen? Auf den Web Service habe ich keinerlei Einfluss.
Vielen Dank im Voraus.

Gruß
 
Hi MadM,

ich habe sämtliche Methoden durchprobiert, aber irgendwie will da nichts funktionieren.
In TCPMon sehe ich noch, dass etwas verschlüsseltes ankommt, aber dann kommt auch schon der Fault. Im Stub habe ich noch eingetragen, dass die unverschlüsselte Nachricht ausgegeben werden soll, aber selbst das funktioniert nicht. Wenn ich keinen Fault zurück bekomme, wird die Nachricht ausgegeben.
Ich bin echt am verzeifeln.

Gruß
 
Hi,

ich habe eine mögliche Ursache meines Problems:

1. Die Nachrichten sind verschlüsselt
2. Die Fehlermeldung kommt auch verschlüsselt bei mir an
3. Der SOAP Header enthält die "action" eines Faults (im Klartext)
4. Axis2 oder RAMPart versuchen anscheinend den Body der Nachricht auch im Klartext zu lesen, weil im Header ja steht, dass es ein Fault sei. Der Body existiert natürlich so nicht, wenn noch nichts entschlüsselt ist

Problem: Wie bekomme ich eine "erzwungene" Entschlüsselung eines Faults hin?


Danke und Gruß
 
Zurück