Ich versuche, Opentext Content Web Services (CWS) von meinem Axis2-basierten Web-Service zu verwenden.So übergeben Sie SOAP-Header mit JAXWSProxyHandler
Dies ist ein Code, der einen Proxy-Client für CWS erstellt und ein Authentifizierungstoken in einer Kopfzeile übergibt.
DocumentManagement_Service docManService = new DocumentManagement_Service();
DocumentManagement docManClient = docManService.getBasicHttpBindingDocumentManagement();
try
{
// The namespace of the OTAuthentication object
final String ECM_API_NAMESPACE = "urn:api.ecm.opentext.com";
// Create a SOAP header
SOAPHeader header = MessageFactory.newInstance().createMessage().getSOAPPart().getEnvelope().getHeader();
// Add the OTAuthentication SOAP header element
SOAPHeaderElement otAuthElement = header.addHeaderElement(new QName(ECM_API_NAMESPACE, "OTAuthentication"));
// Add the AuthenticationToken SOAP element
SOAPElement authTokenElement = otAuthElement.addChildElement(new QName(ECM_API_NAMESPACE, "AuthenticationToken"));
authTokenElement.addTextNode(authToken);
// Set the SOAP header on the docManClient
String ENDPOINT_ADDRESS_PROPERTY = WSBindingProvider.ENDPOINT_ADDRESS_PROPERTY;
((WSBindingProvider) docManClient).setOutboundHeaders(Headers.create(otAuthElement));
}
catch (SOAPException e)
{
System.out.println("Failed to set authentication SOAP header!\n");
System.out.println(e.getMessage());
System.out.println(e.getStackTrace());
return;
}
Dieser Code funktioniert gut, wenn er von einer einfachen Java-Anwendung ausgeführt wird. In diesem Fall ist docManClient ein SEISTub Objekt und setOutboundHeaders Methode funktioniert nach dem Gießen zu WSBindingProvider.
Aber wenn dieser Code in meinem axis2 Webservice ausgeführt wird, ist docManClient JAXWSProxyHandler Objekt und es kann nicht in WSBindingProvider gegossen werden, noch setOutboundHeaders Methode ausführen.
Also meine Frage ist - Wie gebe ich meine Header mit AuthElement mit JAXWSProxyHandler (das gleiche tun wie setOutBoundHeaders Methode tun) oder kann ich irgendwie JAXWSProxyHandler Objekt SEIStub Objekt konvertieren?
Ich bin auch genau an diesem Punkt fest. Kannst du bitte deine Antwort posten, die dir geholfen hat, das Problem zu lösen? – Tony
Wie ich unten erwähnt habe, habe ich JAXWSProxyHandler auf javax.xml.ws.BindingProvider geworfen und einen Weg gefunden, wie man Header an ihn übergibt. Wie ich mich erinnere, habe ich gerade die Dokumentation zur javax.xml.ws.BindingProvider-Klasse gelesen und nach Beispielen für die Übergabe von Headern gesucht. – ifuwannaride