Ho più servizi web (diciamo 2, A e B) e ho bisogno di generare un client per usarli insieme. In Netbeans uso la procedura guidata "nuovo client servizio Web" che passa i due wsdl, guardando l'output Netbeans chiama semplicemente wsimport per ognuno di essi.wsimport: più sovrascrittura wsdl ObjectFactory
wsimport http:/mydomain/wsA.svc?wsdl
wsimport http:/mydomain/wsB.svc?wsdl
Sia A e B, generare un com.myDomain.myApp lo stesso pacchetto (immagino che sono definiti nello stesso namespace), in modo da ottenere il set di classe stub di A e B fusi nello stesso pacchetto .
Tuttavia, wsimport crea anche un ObjectFactory per ogni webservice quindi se si genera lo stub di B dopo A ottengo solo l'ObjectFactory relativo alle definizioni B (poiché il primo, A, viene sovrascritto). Al contrario, ObjectFactory di A sopravvive se cambio l'ordine.
Il problema è che ho bisogno di entrambe le ObjectFactories al fine di creare le istanze Clas JAXBElements di confezionamento per i tipi di entrambi webservices A e B.
Esiste un modo per mappare lo spazio dei nomi per A in un pacchetto Java e la B in un'altra per ottenere
com.mydomain.myapp.a
com.mydomain.myapp.b
e quindi mantenere entrambi i ObjectFactory?
Il semplice refactoring non aiuta perché internamente viene chiamato getClass(), quindi, una volta che un pacchetto è stato refactored, non funziona più.
Ok! Ho usato questo legame XML: \t \t \t \t \t JXB: package> \t JXB: collegamenti> JXB: collegamenti> Tuttavia, mi dà errore XPath: null. Non ho xsd, hai suggerimenti? –
alexroat
Ho appena pensato: hai provato "wsimport -p com.mydomain.myapp.a http: /mydomain/wsA.svc? Wsdl" e poi "wsimport -p com.mydomain.myapp.b http:/mydomain/wsB .svc? wsdl "? Ciò inserirà tutto il codice generato nel pacchetto specificato (come per l'opzione "-p"), senza la necessità di un file di bind. (Avrei dovuto pensarci prima ...) – FOOM
Sì, l'ho fatto. Ci sono molti errori come la classe "Due dichiarazioni causano una collisione nella classe ObjectFactory". e "Una classe/interfaccia con lo stesso nome" com.anthesi.prova.ExecuteTransmDocModelResponse "è già in uso. Utilizzare una personalizzazione della classe per risolvere questo conflitto." – alexroat