Avatar billede _BHL_ Nybegynder
21. december 2012 - 12:04 Der er 10 kommentarer og
1 løsning

Genereret kode til webservice

Hej eksperter

Jeg har tre wsdl'er som jeg genererer kode ud fra vha. Eclipse, Ant og Axis.

Sagen er den at disse genererer kode med dublerede klasser, hvilket gør at jeg ikke kan placere dem i hvert sit lib (jar-fil), da der så opstår "dublicate class definition". Jeg kan heller ikke placere dem samme sted, da de dublerede klasser ikke er ens, kodemæssigt.

Hvad kan jeg stille op med mit problem?

// _BHL_
Avatar billede arne_v Ekspert
21. december 2012 - 15:01 #1
Med Axis er det muligt at angive hvilken package et web service namespace skal mappes til.

Hvis du mapper til forskellige packages, saa burde de ikke konflikte.
Avatar billede _BHL_ Nybegynder
26. december 2012 - 18:16 #2
Hej Arne

Webservicen det omhandler er KMD e-Distribution's ServiceAutorisation.

Jeg har følgende i et Ant-script:

<wsimport xendorsed="true" destdir="Model/bin" sourcedestdir="Model/src/generated/kmd" debug="true" wsdl="https://ws-e-distribution.kmd.dk/standard/serviceautorisation/serviceautorisation.svc?WSDL"/>[/i]

Men jeg kan ikke få det til at fungere.

Har du nogle eksempler eller anden hjælp?
Avatar billede arne_v Ekspert
26. december 2012 - 20:19 #3
Det er ikke Axis, men skidt pyt.

Ifoelge http://jax-ws.java.net/2.1.5/docs/wsimportant.html, saa tager wsimport ogsaa en package attribut.
Avatar billede _BHL_ Nybegynder
27. december 2012 - 00:02 #4
Har fundet ud af at det ikke er Axis - da jeg selv kom til at kigge på det.

Jeg har prøvet med package-attributten, men der opstår fejl under kode-generering idet der er to navnemæssigt ens klasser i forskellige pakker.

Har brugt Google, men kan ikke finde noget svar.
Avatar billede _BHL_ Nybegynder
27. december 2012 - 00:28 #5
Følgende fejl:
A class/interface with the same name "<pakkenavn>.LogOn" is already in use. Use a class customization to resolve this conflict.
Avatar billede arne_v Ekspert
27. december 2012 - 00:45 #6
Du skal bruge forskellig pakke navn til de forskellige services.
Avatar billede _BHL_ Nybegynder
27. december 2012 - 01:05 #7
Hvordan differentierer jeg når det er beskrevet i samme wsdl?
Avatar billede arne_v Ekspert
27. december 2012 - 01:13 #8
Hvis det er i samme WSDL hvordan kan du saa faa duplikate klasser??
Avatar billede _BHL_ Nybegynder
27. december 2012 - 01:21 #9
Jeg får dublicate klasser hvis jeg fyrer nedenstående af:

<wsimport xendorsed="true" destdir="Model/bin" sourcedestdir="Model/src/generated/kmd" debug="true" wsdl="https://ws-e-distribution.kmd.dk/standard/serviceautorisation/serviceautorisation.svc?WSDL" />
<wsimport xendorsed="true" destdir="Model/bin" sourcedestdir="Model/src/generated/kmd" debug="true" wsdl="https://ws-e-distribution.kmd.dk/standard/servicesoegejendom/servicesoegejendom.svc?WSDL" />


Det forsøger jeg at undgå ved at bruge package-attributten, men så får jeg fejl:
A class/interface with the same name "<pakkenavn>.LogOn" is already in use. Use a class customization to resolve this conflict.

Dette er tilsyneladende fordi der er navnesammenfald for klasser i hver wsdl (dog ligger de heri i hver deres pakke).
Avatar billede _BHL_ Nybegynder
27. december 2012 - 04:24 #10
Har fundet en løsning på alle problemer.

<wsimport xendorsed="true" destdir="Model/bin" sourcedestdir="Model/src/generated/kmd" debug="true" wsdl="https://ws-e-distribution.kmd.dk/standard/serviceautorisation/serviceautorisation.svc?WSDL" package="dk.kmd.ws_e_distribution.autorisation"><xjcarg value="-XautoNameResolution"/></wsimport>
<wsimport xendorsed="true" destdir="Model/bin" sourcedestdir="Model/src/generated/kmd" debug="true" wsdl="https://ws-e-distribution.kmd.dk/standard/servicesoegejendom/servicesoegejendom.svc?WSDL" package="dk.kmd.ws_e_distribution.soegejendom"/>


Arne! Smid et svar og få points for din hjælp.
Avatar billede arne_v Ekspert
27. december 2012 - 18:46 #11
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester