J'essaie d'utiliser des services Web de contenu Opentext (CWS) à partir de mon service Web axé sur axis2.Comment passer les en-têtes SOAP avec JAXWSProxyHandler
Ceci est un morceau de code qui crée un client proxy à CWS et transmet un jeton d'authentification dans un en-tête.
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;
}
Ce code fonctionne correctement lorsqu'il est exécuté à partir d'une application Java simple. Dans ce cas, docManClient est un objet SEIStub et la méthode setOutboundHeaders fonctionne après la conversion en WSBindingProvider.
Mais lorsque ce code est exécuté à l'intérieur de mon axis2 webservice, docManClient est JAXWSProxyHandler objet et il ne peut pas être casté dans WSBindingProvider ni méthode execute de setOutboundHeaders.
Alors ma question est - Comment puis-je passer mon en-tête avec l'aide AuthElement JAXWSProxyHandler (faire la même chose que la méthode de setOutBoundHeaders faire) OU Puis-je convertir en quelque sorte l'objet JAXWSProxyHandler pour objet SEIStub?
Je suis également coincé exactement à ce point. Pouvez-vous s'il vous plaît poster votre réponse qui vous a aidé à résoudre le problème? – Tony
Comme je l'ai mentionné ci-dessous, j'ai jeté JAXWSProxyHandler à javax.xml.ws.BindingProvider et trouvé un moyen de lui passer des en-têtes. Comme je me souviens, je viens de lire la documentation sur la classe javax.xml.ws.BindingProvider et j'ai cherché des exemples d'en-têtes passant à l'utiliser. – ifuwannaride