2010-06-06 1 views
0

Веб-сервис, который я осуществил это и работает, когда я пытаюсь запустить клиент, я получаю следующее сообщение об ошибке в отношении классов, которые были созданы с использованием wsimport,веб-сервис - клиентские классы

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) 

Но Я не могу понять, что именно означает ошибка. Я предполагаю, что мне нужно изменить что-то в аннотации к этим классам как было указано компилятором:

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


} 


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

может кто-то пожалуйста, указать, почему существует коллизия имени и что аннотации мне нужно изменить?

благодаря

+0

Был ли сгенерированный код произведен в одно исполнение 'wsimport' или несколько исполнений? – skaffman

+0

Err, что подразумевается под числом исполнений wsimport? Я просто запускал команду через Windows CMD один раз, если это отвечает на нее. – Noona

+0

Не могли бы вы вставить аннотации, которые вы использовали в классе UserJoined? Вы имеете дело с кодом, который вы сами не пишете? Если да, выполните поиск по имени «name =» userJoinedResponse »и« name = »userJoined« »по всему коду и посмотрите, если вы найдете дубликаты аннотаций. –

ответ

0

Мой учитель предложил (среди других причин), что может быть, есть что-то не так с тем, как я бежал утилиту wsimport, поэтому я регенерировать файлы классов клиента с помощью wsimport и проблема была решена. возможно, я не указывал имя пакета в начале и делал это вручную в первый раз, но я не уверен.

0

У меня такое же исключение. Причиной является сходство имен обоих классов. Когда у вас есть класс с именем UserJoined во время процесса генерации wsdl, JAXB генерирует элемент с именем UserJoinedResponse (см. Файл wsdl).

И вы пытаетесь добавить еще один класс с тем же именем (UserJoinedResponse). Поэтому просто переименуйте класс UserJoinedResponse или отметьте его как указано в исключении.

Смежные вопросы