2012-09-16 9 views
7

Ho creato un servizio Web utilizzando JAX-WS in RSA 7.5 e Websphere 7 utilizzando l'approccio bottom-up. Quando si apre la WSDL SOAP UI, allora la sezione di argomenti viene visualizzato in questo modo:Rinominare il nome dell'argomento in JAX-WS

<!--Optional--> 
<arg0> 
    <empID>?</empId> 
</arg0> 
<!--Optional--> 
<arg1> 
    <empName>?</empName> 
</arg1> 
<!--Optional--> 
<arg2> 
    <empAddress>?</empAddress> 
</arg2> 
<!--Optional--> 
<arg3> 
    <empCountry>?</empCountry> 
</arg3> 

Procedimento servizio richiede suddetti 4 elementi come i parametri per restituire i dettagli sui dipendenti.

1) Voglio rinominare questo arg0, arg1 e così via con alcuni nomi validi.

2) Desidero rimuovere il <!--optional--> presente sopra i tag arg. (Per rimuovere <!--optional--> dal nome di elementi, ho usato @XMLElement (richiesto = true)). Ma io non sono sicuro di dove esattamente a utilizzare questa annotazione in questo caso :(

prega di aiuto.

saluti,

risposta

12

Si mette il @XMLElement (richiesto = true) sopra le variabili nella classe che Sono appena tornato dal tuo servizio. Ho appena saputo di questa opzione circa un mese fa Quindi sopra sopra dove dichiari empName metti il ​​tag e richiesto

Per rinominare i parametri del tuo servizio usa @WebParam (name = " ") davanti a ciascuna variabile di input per il servizio

Per esempio, se si dispone di un metodo di servizio denominato get (String name) che sarebbe simile a get (@WebParam (name = "nome") String name)


Lei ha ragione, ora che ho leggi di nuovo il tuo commento. I servizi che supporto utilizzano gli oggetti nell'input e nell'output, motivo per cui ho inserito il tag XMLElement nella classe di tali oggetti.

È necessario inserire il tag nella classe che dichiara le variabili passate o restituite al servizio. Se quelli che sono stati dichiarati nella tua classe di servizio va bene. Il punto principale è che metti il ​​tag XMLElement sopra la dichiarazione della variabile, anziché metterlo su un getter o setter.

Questo tutorial mostra alcuni esempi dell'utilizzo. JAXB tutorial

+0

SE metto '@XMLElement (required = true)' sopra la variabile membro EmpName, quindi rimuoverà '<1 - Optional ->' presente sopra il tag ? Penso che non funzionerà, devo metterlo da qualche parte nella classe di servizio stessa dal momento che l'arg0 è passato nel servizio stesso. Hai provato questo? Non ho il sistema DEV disponibile nw, altrimenti potrei aver dato una prova nit.Ma penso che questo rimuoverà '' dal nome emp, ma non da sopra il '' – user182944

+1

Devi mettere il tag richiesto = true sopra ogni variabile nei tuoi dati, quindi tutti i 4 nel tuo caso. Faccio servizi di supporto e mi ha sempre infastidito anche in SoapUI perché abbiamo questi tag su tutte le nostre variabili. Ho appena scoperto che un mese fa l'utilizzo del tag XMLElement avrebbe rimosso i tag opzionali da ciò che SoapUi genera. – Logan

+0

Grazie per tutte le informazioni. Ho provato i tuoi suggerimenti e la maggior parte di essi ha funzionato :) Puoi dirmi un paio di cose: 1) quando eseguo l'url presente nel WSDL per verificare se il servizio è attivo o meno, ricevo un messaggio: "Ciao! Questo è un servizio Web Axis2! 'La mia domanda è perché mostra Axis2? JAX-WS ha qualche relazione con Axis2? 2) Oggi ho implementato SOAPHandler per il mio servizio web. Ho usato l'annotazione '@handlerchain (file =" filepath ")' e il file è stato inserito nella cartella WebContent. Mi ha lanciato un'eccezione. Ma metterlo sotto il pacchetto di servizi ha funzionato bene. Perché? – user182944