2009-06-08 6 views
0

Je teste JAX-WS pour accéder aux services Web Oracle IRM. Je peux le faire fonctionner correctement avec AXIS donc ce n'est pas un problème Oracle.L'objet complexe dans JAX-WS est créé vide

Ce qui se passe est que je reçois l'erreur suivante lors de l'appel:

Expected xsd:anyType - unknown type provided 

Si je regarde le paquet SOAP est envoyé, je vois que l'étiquette de propriétaire est vide sous JAX-WS:

<ns1:browseAccounts> 
    <owner/> 
    <accountType>All</accountType> 
</ns1:browseAccounts> 

la même pièce sous AXIS est la suivante:

<owner xsi:type="ns1:LicenseServer" 
     xmlns="" 
     xmlns:ns1="http://www.sealedmedia.com/ls/server/schema"> 
    <serverKey>#############</serverKey> 
</owner> 

Il est évident que la balise propriétaire ne reçoit pas correctement créé, voici ce que je utilise pour créer que:

AccountServicesPort AA = ORI.getAccountServices(); 
LicenseServer LicSer = new LicenseServer(); 
LicSer.setServerKey("#######################"); 
List<Account> Acts = AA.browseAccounts(LicSer,AccountAccountType.ALL); 

Y at-il un autre processus que je dois passer pour créer l'objet correctement?

EDIT

Je pensais que peut-être la création en cours d'exécution à travers LicenseServer ObjectFactory aiderait. Malheureusement, ce n'est pas le cas.

Répondre

0

Malgré la documentation Oracle IRM indiquant que BrowseAccounts accepte un objet LicenseServer ou un objet Context pour le paramètre owner, il accepte en réalité un LicenseServer_ref.

EDIT De plus, je courais JAX-WS sous JDK 1.6.0 qui est une version inférieure à 1.6.0_14 JDK. La nouvelle version prend en charge l'annotation XMLSeeAlso qui permet à JAX-WS d'utiliser la classe appropriée pour la sérialisation.