2010-06-06 8 views
0

Le service web que je mis en œuvre est en cours d'exécution, lorsque je tente d'exécuter le client je reçois l'erreur suivante en ce qui concerne les classes qui ont été générées en utilisant wsimport,service web - classes client

Caused by: java.security.PrivilegedActionException: com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 4 counts of IllegalAnnotationExceptions 
Two classes have the same XML type name "{http://server.agency.hw2/}userJoined". Use @XmlType.name and @XmlType.namespace to assign different names to them. 
    this problem is related to the following location: 
     at hw2.chat.backend.main.generatedfromserver.UserJoined 
     at public javax.xml.bind.JAXBElement hw2.chat.backend.main.generatedfromserver.ObjectFactory.createUserJoined(hw2.chat.backend.main.generatedfromserver.UserJoined) 
     at hw2.chat.backend.main.generatedfromserver.ObjectFactory 
    this problem is related to the following location: 
     at ChatCompany.BackendChatServer.hw2.chat.backend.main.generatedfromserver.UserJoined 
Two classes have the same XML type name "{http://server.agency.hw2/}userJoinedResponse". Use @XmlType.name and @XmlType.namespace to assign different names to them. 
    this problem is related to the following location: 
     at hw2.chat.backend.main.generatedfromserver.UserJoinedResponse 
     at public javax.xml.bind.JAXBElement hw2.chat.backend.main.generatedfromserver.ObjectFactory.createUserJoinedResponse(hw2.chat.backend.main.generatedfromserver.UserJoinedResponse) 

Mais Je ne peux pas comprendre ce que signifie exactement l'erreur. Je suppose que je dois changer quelque chose dans les annotations dans ces classes comme l'a souligné le compilateur:

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "userJoinedResponse") 
public class UserJoinedResponse { 


} 


@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "userJoined", propOrder = { 
    "arg0" 
}) 
public class UserJoined { 

Quelqu'un pourrait-il s'il vous plaît indiquer pourquoi il y a une collision de nom et ce que les annotations que je dois changer?

grâce

+0

Tout le code généré a-t-il été généré en une seule fois avec 'wsimport' ou avec plusieurs exécutions? – skaffman

+0

Err, qu'entend-on par le nombre d'exécutions de wsimport? Je viens de lancer la commande via Windows CMD une fois si cela répond. – Noona

+0

Pourriez-vous coller les annotations que vous avez utilisées dans la classe UserJoined? Traitez-vous du code que vous n'avez pas écrit vous-même? Si oui, faites une recherche pour 'name = "userJoinedResponse"' et 'name = "userJoined"' dans tout le code et voyez si vous trouvez les annotations en double. –

Répondre

0

Mon professeur a suggéré (entre autres) que peut-être il y a quelque chose de mal avec la façon dont j'ai couru l'utilitaire wsimport, donc je régénérés les fichiers de classe client à l'aide wsimport et le problème a été résolu. il se peut que je n'aie pas spécifié le nom du paquet au début et l'ai fait manuellement la première fois mais je suis incertain.

0

J'ai la même exception. La raison en est une similitude des noms des deux classes. Lorsque vous avez cours avec le nom UserJoined pendant le processus de génération wsdl, JAXB génère l'élément avec le nom UserJoinedResponse (voir votre fichier wsdl).

Et vous essayez d'ajouter une autre classe avec le même nom (UserJoinedResponse). Il suffit donc de renommer la classe UserJoinedResponse ou de l'annoter comme indiqué dans l'exception.

Questions connexes