Ich habe einen SOAP-Client in Java mit Apache CXF (mit wsdl2java) implementiert. Ich wurde gebeten, den Soap-Header mit einem benutzerdefinierten Header-Block zu erweitern. Dies ist, wie der Header aussehen sollte:Hinzufügen benutzerdefinierten Header-Block in SOAP-Header
anstelleDie WS-Security und WS-Addressing ist schon habe ich die integrierte Funktionalität in CXF für diese (z WSS4JOutInterceptor) verwendet.
Der benutzerdefinierte Block sollte wie folgt aufgebaut sein:
<customHeader xmlns:func="http://...." xmlns="http://....">
<customElement>
<customValue>....</customValue>
</customElement>
</customHeader>
Ich bin nicht sicher, wie der benutzerdefinierte Header-Block hinzuzufügen. Ich suche den AbstractSoapInterceptor bei der Umsetzung:
public class CustomHeaderInterceptor extends AbstractSoapInterceptor {
public CustomHeaderInterceptor() {
super(Phase.WRITE);
getAfter().add(WSS4JOutInterceptor.class.getName());
}
@Override
public void handleMessage(SoapMessage message) throws Fault {
....
}
}
jedoch sicher, dass mir nicht genau, was hier zu tun. Ich stelle auch fest, dass die message.getHeaders() leer ist. Ich habe auch die Phase.SEND versucht, und die Header-Liste ist noch leer. Die Reihenfolge der Header muss wie oben beschrieben sein. Bin ich hier auf der falschen Spur? Irgendwelche Eingaben, wie man das richtig macht, wären willkommen!