2016-01-29 1 views
0

J'ai le problème suivant avec la version 2.7.7-redhat-1 de CXF, qui semble être un bogue dans la bibliothèque. Avec la demande suivante:Remplacer l'espace de noms par un espace de noms vide CXF (JBoss EAP 6.2.4.GA)

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <soap:Body> 
    <authorizePayment xmlns="http://ejb.example.org"> 
     <request xmlns=""> 
     <role xmlns:q1="http://to.homepay.example.org" xsi:type="q1:CustomerTO"> 
      <user>7C742</user> 
     </role> 
     <error> 
      <errorCode>1</errorCode> 
      <errorMessage>1</errorMessage> 
     </error> 
     <status> 
      <code>1</code> 
     </status> 
     <ordAccount>1</ordAccount> 
     <logId>374216011815223570893830967949</logId> 
     <signMethod>1</signMethod> 
     <lang>1</lang> 
     <terminalId>1</terminalId> 
     <terminalLocation>Earth</terminalLocation> 
     </request> 
    </authorizePayment> 
    </soap:Body> 
</soap:Envelope> 

Je reçois l'erreur suivante:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
     <soap:Fault> 
     <faultcode>soap:Client</faultcode> 
     <faultstring>Unmarshalling Error: unexpected element (uri:"http://ejb.example.org", local:"request"). Expected elements are &lt;{}request></faultstring> 
     </soap:Fault> 
    </soap:Body> 
</soap:Envelope> 

De la demande, vous pouvez voir clairement que l'espace de noms de la demande est « » débrayés de son parent.

Si je change la demande:

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <soap:Body> 
    <aa:authorizePayment xmlns:aa="http://ejb.example.org"> 
     <request xmlns=""> 
     <role xmlns:q1="http://to.homepay.example.org" xsi:type="q1:CustomerTO"> 
      <user>7C742</user> 
     </role> 
     <error> 
      <errorCode>1</errorCode> 
      <errorMessage>1</errorMessage> 
     </error> 
     <status> 
      <code>1</code> 
     </status> 
     <ordAccount>1</ordAccount> 
     <logId>374216011815223570893830967949</logId> 
     <signMethod>1</signMethod> 
     <lang>1</lang> 
     <terminalId>1</terminalId> 
     <terminalLocation>Earth</terminalLocation> 
     </request> 
    </aa:authorizePayment> 
    </soap:Body> 
</soap:Envelope> 

Les travaux d'appel. J'ai besoin d'un moyen de résoudre ce problème côté serveur, le client ne peut pas être modifié pour modifier la demande.

Versions: JBoss AS version: 7.3.4.Final-redhat-1 "Janus" JBoss AS produit: EAP 6.2.4.GA java.version: 1.7.0_91

+0

Avez-vous déjà trouvé une solution pour cela? J'ai rencontré le même problème. – Cork

Répondre

0

Réglez le elementFormDefault=qualified en le wsdl, générer les artefacts et redéployer l'application. Signifie que les déclarations d'éléments locaux (xs: element dans xs: complexType) font référence à des éléments dans l'espace de noms cible du schéma. Sans cela, ils se réfèrent à des éléments dans aucun espace de noms.

+0

Déjà essayé, ce n'est pas le problème, comme vous pouvez le voir de l'erreur qu'il sait s'attendre à un champ non qualifié Les éléments attendus sont < {} request>, j'ai essayé le même appel dans WAS et sur d'autres versions de JBoss et tout le monde d'entre eux fonctionne, juste sur cette dernière version de JBoss EAP 6.2.4 –