2013-09-04 6 views
5

devo una classe di entità:Nascondere una variabile un'entità dal messaggio XML - non @XmlTransient lavoro

public class Customer implements Serializable { 
private static final long serialVersionUID = 1L; 

@XmlTransient 
@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
@Basic(optional = false) 
@Column(name = "CUSTOMER_ID") 
private Integer customerId; 
@Basic(optional = false) 
@NotNull 
@Size(min = 1, max = 30) 
@Column(name = "NAME") 
private String name; 
@Basic(optional = false) 
@NotNull 
@Size(min = 1, max = 30) 
@Column(name = "ADDRESSLINE1") 
private String addressline1; 
@Basic(optional = false) 
. 
. 
. 
. 

ho mandato un oggetto della classe tramite XML in servizio web JAX-WS in questo modo:

<addressline1>Bunkilla</addressline1><addressline2>Donoughmore</addressline2><city>Cork</city><country>Ireland</country><creditLimit>10</creditLimit><customerId>1</customerId><email>[email protected]</email><fax>0217337330</fax><name>David</name><owner>david</owner><phone>0217437661</phone><province>Munster</province><zip>02</zip> 

È possibile non inviare una delle variabili come customerId, che il client non dovrebbe vedere? Ho aggiunto @XmlTransient, ma nessuna modifica.

risposta

16

Per impostazione predefinita le proprietà pubbliche sono serializzate su XML. Dovrai contrassegnare il corrispondente metodo get@XmlTransient. Se si desidera annotare i campi, è possibile aggiungere quanto segue alla classe @XmlAccessorType(XmlAccessType.FIELD).

Per ulteriori informazioni

+1

Grazie per la risposta, ha funzionato bene. Queste piccole cose sono difficili da trovare. – David031

0

provato con @XmlTransient in diverse combinazioni con @XmlAccessorType(XmlAccessType.FIELD), sulla mia macchina non ha funzionato.

Che cosa ha funzionato per me, per nascondere le funzioni, era quello di annotare ciascuna funzione con @WebMethod(exclude = true), per nasconderla dal wsdl e quindi esposizione al client.