Uso Apache CXF 2.4.2 e quando restituisco alcuni oggetti dal database all'utente, voglio escludere alcune proprietà (ad esempio, password). Come posso farlo senza creare una classe temporanea? C'è annotazione per questo?CXF: come escludere alcune proprietà quando l'oggetto viene inviato tramite SOAP?
risposta
Come da @ commento Tomasz-nurkiewicz dovrei usare @XmlTransient
annotazione. Tuttavia, come indicato nella documentazione
Per impostazione predefinita, se @XmlAccessorType su una classe è assente, e nessuna delle sue classi Super è annotato con @XmlAccessorType, allora la seguente impostazione predefinita sulla classe si presume:
@ XmlAccessorType (XmlAccessType.PUBLIC_MEMBER)
Dove XmlAccessType.PUBLIC_MEMBER
significa che:
ogni getter pubblico/pair setter e ogni unità di elaborazione il campo blic verrà automaticamente associato a XML, a meno che annotato da XmlTransient. I campi o le coppie getter/setter private, protette o predefinite all'accesso al solo pacchetto sono associati all'XML solo quando sono annotati esplicitamente dalle annotazioni JAXB appropriate.
Quindi questo è il motivo per cui @XmlTransient
per il campo privato non funziona in esempio da Tomasz Nurkiewicz. Ci sono due modi possibili per risolvere questo:
1) Aggiungi annotazione getter pubblico:
private String password;
@XmlTransient
public String getPassword() {
return password;
}
2) Aggiungi @XmlAccessorType
in classe:
@XmlAccessorType(XmlAccessType.FIELD)
public User {
@XmlTransient
private String password;
}
disponibili all'indirizzo: http://old.nabble.com/@XmlTransient-ignored-td7406659.html
Presumo che si stia utilizzando JAXB per il mapping XML degli oggetti. In tal caso è sufficiente annotare i campi che si desidera saltare nell'entità database con @XmlTransient
.
@XmlTransient
private String password;
Tuttavia notare che un giorno vi renderete conto che si bisogno una classe temporanea soprattutto per disaccoppiare il servizio web CXF dal backend. Dopo tutto quello che non si vuole ricordare per tutto il tempo che l'aggiunta di una colonna nel database rompe immediatamente l'interfaccia SOAP ...
- 1. Come catturare ctrl-c in lua quando ctrl-c viene inviato tramite la riga di comando
- 2. Come verificare se un modulo viene inviato tramite javascript?
- 3. Viene inviato un campo di testo disabilitato quando viene inviato un messaggio a un modulo?
- 4. Come escludere alcune chiamate in strace?
- 5. Come escludere il metodo da CXF WebService - strano comportamento
- 6. L'evento Magento viene sempre inviato quando l'ordine viene eseguito correttamente?
- 7. Un messaggio SOAP 1.2 non è valido se inviato a un SOAP 1.1 solo endpoint
- 8. Xcode - escludere alcune stringhe di localizzazione
- 9. Imposta gli attributi di richiesta quando viene inviato un modulo
- 10. Controllare il tipo di file quando il modulo viene inviato?
- 11. Primavera eccezione vincolante quando un modulo viene inviato
- 12. Il modello è nullo quando viene inviato il modulo
- 13. SOAP-ERRORE: Encoding: oggetto non ha proprietà
- 14. Connessioni SOAP tramite un proxy utilizzando URLEndpoint
- 15. % j specificatore in console.log esclude alcune proprietà
- 16. Come posso escludere alcune cartelle dal mio progetto Eclipse?
- 17. Lombok escludere proprietà dal costruttore
- 18. Ignora gestione errori CXF
- 19. Webservice con CXF: come utilizzare ResponseWrapper?
- 20. SoapAction header mancante quando si utilizza CXF
- 21. Come esporre un tipo di set Delphi tramite Soap
- 22. onActivityResult viene chiamato non appena viene inviato l'invio della telecamera
- 23. Come viene inizializzata la vista quando caricata tramite uno storyboard?
- 24. Perché viene fatto clic su un pulsante quando viene inviato un modulo?
- 25. Caricamento di immagini tramite l'API SOAP Magento
- 26. Come ottenere un array in Django inviato tramite Ajax
- 27. Windows Phone: come escludere colonne/proprietà in SQLite-net?
- 28. QTableView - quale segnale viene inviato quando l'utente seleziona una riga facendo clic su di esso?
- 29. BigDecimal ha notazione scientifica nel messaggio soap
- 30. dove trovare cxf/cxf.xml, cxf-extension-soap.xml, cxf-servlet.xml
I Non sono sicuro di cosa io usi, perché ho solo aggiunto 'cxf-rt-frontend-jaxws' e' cxf-rt-transports-http' al mio 'pom.xml' per usare CXF. Ma vedo 'jaxb-impl-2.1.13.jar' e' cxf-rt-databinding-jaxb-2.4.3.jar' nel mio pacchetto WAR, quindi sembra che tu abbia ragione. Ho provato a usare '@ XmlTransient' senza fortuna :(Ho anche aggiunto' @ XmlRootElement' a tutta la classe, ma non è cambiato nulla.Hai un altro suggerimento? –
Ciao di nuovo! Io googlando e faccio poca ricerca e ho trovato come risolvere il mio problema Vedi il mio aggiornamento, inoltre investo la tua risposta perché mi aiuta a trovare la soluzione giusta. Grazie! –