Два класа имат едно и също име на xml тип

Когато се опитам да публикувам работното си пространство в RAD, получавам тази грешка „Два класа имат едно и също име на xml тип“, вероятно защото едно и също име на клас съществува в един и същи пакет, но в два различни буркана. И изглежда, че анотацията @XmlType трябва да има различни стойности за име на атрибути и пространство от имена в източниците на тези класове. Опитах wsdl2java, наличен в Apache CXF, но не мога да го накарам да генерира този атрибут на пространство от имена. Опитах да си играя с опцията за пакет -p, но това е само за поставяне на генерираните източници в посочения пакет.

Някакви идеи как да генерирам този атрибут за пространство от имена за всеки елемент, срещан в wsdl? TIA.


person asgs    schedule 14.02.2011    source източник


Отговори (2)


благодарение на отговора на Daniel:

CXF JAXB JAXBEncoderDecoder грешка при демаршалиране: неочакван елемент, когато има квалифицирани елементи

Научих, че има параметър -xjc-npa за wsdl2java, който ми помогна. Това ще добави анотации XmlType.name и XmlType.namespace към генерираните класове, така че няма да е проблем, ако имате едни и същи имена на класове, но в различни пространства от имена

person john    schedule 03.06.2011
comment
Благодаря! Никога не съм мислил, че ще получа отговор. - person asgs; 03.06.2011

Попаднах на това за обект с име „SubmitDataResponse“, който използвах като върнат обект от моя метод на уеб услуга с име „submitData“. Когато се опитах да преименувам обекта, грешката изчезна. Струва ми се, че CXF създава свой собствен обект за връщане въз основа на името на метода (в този случай submitData() -> "SubmitDataResponse"). Може да опитате да преименувате класа и да видите дали имате същия проблем. Може би някой може да се включи с начин да запазим името на нашия клас така, както искаме (вероятно с някаква анотация).

Надявам се това да помогне.

person GiantLeprechaun    schedule 21.03.2011
comment
Последващи действия: Добавих @XmlType(namespace=com.company.example) към моя оригинален клас на върнат обект и той проработи. Така че нямаше нужда да преименувам класа на връщания обект, стига да използвам анотацията XmlType.namespace. - person GiantLeprechaun; 21.03.2011
comment
HawkeyeFan, благодаря за отговора, но не, това не е проблемът, с който се сблъсках. Ставаше въпрос за два класа, които бяха там в два буркана с еднакви имена на пакети. В крайна сметка трябваше да премахна един от тях и да живея с него. Да, атрибутът на namespace изглежда коригира това, но може ли wsdl2java да го генерира? може би трябва да уточня/конфигурирам нещо? - person asgs; 21.03.2011
comment
Освен това имаше много други класове, дублирани в тези два буркана (вероятно защото два WSDL са много сходни). Така че получих актуализиран WSDL и следователно генерираният буркан не съдържа никакви дубликати. - person asgs; 22.03.2011