Java (web service SOAP) - Comment puis-je ajouter un SAVON gestionnaire sur le côté client et activer MTOM correct?
Java - JDK 1.6.0.7 - WSGEN -version: JAX-WS RI 2.2.3-b01-
J'ai le problème suivant:
SOAPBinding binding = (SOAPBinding)((BindingProvider)port).getBinding();
binding.setMTOMEnabled(true);
List<Handler> handlerChain = new ArrayList<Handler>();
handlerChain.addAll(binding.getHandlerChain());
handlerChain.add(new MyHandlerSecurity("admin", "admin"));
binding.setHandlerChain(handlerChain);
Avec ce code, le SoapHeader est correct, mais la pièce jointe est toujours un inline base64 texte.
//List<Handler> handlerChain = new ArrayList<Handler>();
//handlerChain.addAll(binding.getHandlerChain());
//handlerChain.add(new MyHandlerSecurity("admin", "admin"));
//binding.setHandlerChain(handlerChain);
Quand handlerChain est commenté, vous allez voir la pièce jointe dans un xop de référence, mais il n'y a pas de SoapHeader et ainsi, le client n'est pas authentifié...
Comment puis-je ajouter un gestionnaire sur le côté client et activer MTOM correct?
OriginalL'auteur user2017 | 2012-09-17
Vous devez vous connecter pour publier un commentaire.
Je ne sais pas si j'ai le droit de la question, mais je pense que j'ai eu le même problème il y a quelques mois, voici donc ma solution:
D'abord vous avez besoin d'un HeaderHandler classe , ce qui crée l'en-tête soap élément, il devrait ressembler à ceci:
Après que vous créez une HeaderHandlerResolver pour gérer l'en-tête de la création et de l'insérer dans un gestionnaire de la chaîne d':
Après cela, vous ajoutez dans le Client:
En passant, je n'ai pas testé cette en-tête particulier, j'ai modifié un en-tête précédent gestionnaire de j'ai eu, de sorte qu'il peut ne pas être précis, mais je pense que c'est assez proche, j'espère vraiment qu'il vous aide, essayez-le et dites-nous comment il vient, je vais essayer de vous aider si cela ne fonctionne pas.
Quel est le résultat de retourner false à partir de la méthode handleFault? Et que dire de retourner null à partir de la getHeaders méthode?
retourner false va bloquer le traitement du message, vous êtes essentiellement en disant: "si ce gestionnaire ne jeter l'ensemble du message" check docs.oracle.com/javaee/5/api/javax/xml/ws/handler/... au moment de retourner la valeur null dans getHeaders vous êtes "ce gestionnaire gère pas d'en-tête spécifique", c'est pourquoi nous avons notre propre gestionnaire de résolution, rétrospectivement, vous pouvez probablement se débarrasser de la gestionnaire de résolution par le retour de la droite, en-têtes, mais je n'ai pas essayé docs.oracle.com/javaee/5/api/javax/xml/ws/handler/soap/...
OriginalL'auteur