Problème de génération Java, services web SOAP client avec JDK outil wsimport à partir d'un WSDL généré par un .NET 2.0 de l'application
Je suis en train de générer un client pour un peu de SAVON services web à l'aide du JDK 6 outil wsimport
.
Le WSDL généré par un .NET 2.0 de l'application. Pour .NET 3.Les applications X, il fonctionne très bien.
Quand je lance
wsimport -keep -p mypackage http://myservice?wsdl
elle présente plusieurs des messages d'erreur comme ceci:
[ERREUR] UNE classe ou interface avec le même nom "mypackage.SomeClass" est déjà en cours d'utilisation.
Utiliser une classe de personnalisation pour résoudre ce conflit. ligne ?? de http://myservice?wsdl
Lorsque je génère le client de services web à l'aide de l'Axe 1.4 (à l'aide de l'Éclipse WebTools plug-in).
Quelqu'un sait ce que je peux faire pour utiliser le wsimport
outil? Je ne comprends vraiment pas ce que la "classe de personnalisation" chose est.
Vous devez vous connecter pour publier un commentaire.
Je ne sais pas si cela a jamais été résolu, mais j'ai passé un certain temps à googler pour trouver une solution à ce même problème.
J'ai trouvé un fix ici - https://jax-ws.dev.java.net/issues/show_bug.cgi?id=228
La solution consiste à exécuter wsimport avec le
-B-XautoNameResolution
(sans les espaces)wsimport
de commande. Mais la racine de ce problème pour moi, il y a deux types attenante avecXResponse
et avec un caractère de soulignementX_Response
de sorte qu'il se produit de conflit de nom, si le nommant serait compréhensible commeXResponse
etXResponseDefinition
, il aura pas de problème.Pour tous ceux qui lisent ce à l'aide de maven, c'est comment faire pour l'ajouter à l' .pom fichier. Note de l'argument dans la section de configuration. Ce n'est pas très facile à trouver dans la documentation. Merci beaucoup à Isaac Stephens pour son aide avec cela.
Accepté la réponse ci-dessus permettrait de résoudre votre problème, mais pas de corriger la cause sous-jacente.
Le problème se produit en raison d'une opération dans votre fichier wsdl a le même nom qu'un xsd:complexType dans votre fichier xsd - comme dans l'exemple ci-dessous. Tous les types et toutes les opérations doivent avoir des noms uniques.
Afin de vérifier les opérations et les types. Assurez-vous qu'aucun d'entre eux ont le même nom, c'est à dire pas de noms en double.
Vous êtes peut-être la production de toutes les classes à partir du fichier WSDL dans le même package. Si c'est le cas, essayez de définir un autre package cible pour chaque fichier WSDL avec l'option-p de wsimport.