2016-02-12 1 views
0

Je rencontre un problème avec la manière dont JAX-WS (Java 1.6) génère les messages soap à envoyer au serveur distant. J'ai utilisé l'importation WSDL pour générer toutes les classes nécessaires mais j'ai remarqué que lorsque le message SOAP est envoyé au serveur, il insère un xmlns = "" et un xmlns: ns2 = "http: // somexmlnamespace" sur un nœud imbriqué comme ceci:Message de savon client JAX-WS Insertion d'un espace de noms vide sur des noeuds imbriqués

<?xml version="1.0" encoding="UTF-8"?> 
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> 
    <S:Body xmlns="http://somexmlnamespace"> 
     <ParentNode xmlns="http://somexmlnamespace"> 
     <ChildNode xmlns="" xmlns:ns2="http://somexmlnamespace"> 
     </ChildNode> 
     </ParentNode> 
    </S:Body> 
</S:Envelope> 

La zone vide xmlns = "" provoque des problèmes avec le service auquel j'essaie de me connecter. Si je publie le message manuellement sans cela:

<ChildNode xmlns:ns2="http://somexmlnamespace"> 
     </ChildNode> 

la réponse de message de savon est ce que je m'attends à ce qu'il soit. Comment est-ce que je pourrais avoir Java sans envoyer le xmlns = ""? Y a-t-il une modification dans les classes générées dans les annotations XML ou un gestionnaire de messages corrige-t-il cela?

+0

coller le code généré spécifiquement à cette partie, je pense qu'il devrait y avoir quelque chose qui pointe vers l'espace de noms, utilisez-vous wsdl2import, jaas, ou quel outil pour créer le client? – Koitoer

Répondre

0

En classe parentNode ajouter la méthode ci-dessous pour getChildNode(): - @ XmlElement (namespace = "http: // somexmlnamespace")

Si l'on suppose childNode est dans l'espace de noms http://somexmlnamespace en raison de xmlns spécifiées dans ParentNode.

J'ai supposé JAXB. Si cela ne répond pas, @Koitoer a dit de fournir votre code généré.