WebService com objetos genéricos

2 respostas
wesley.comput

Boa tarde pessoal do GUJ, estou com um problema com tipo genérico em WebService utilizando JAX-WS. Tenho uma classe que armazena dados para serem retornados a um cliente WebService porém quando gero os artefatos no cliente a classe aparece sem os atributos e os métodos.

Classe no WebService:

public class OutputData  {

private List list;

private int total;

gets()

sets()

}
Artefato gerado na aplicação cliente:

@XmlAccessorType(XmlAccessType.FIELD)

@XmlType(name = outputData)

public class OutputData {

}

Minha dúvida é quanto ao uso de tipos genéricos no JAX se existe alguma recomendação quanto ao seu uso.

2 Respostas

E

Resumindo: suporte a tipos genéricos em JAX depende do que você está usando :slight_smile:

wesley.comput

Pessoal consegui resolver o problema utilizando a annotation @XMLTransient, existem outras formas de fazer, mas achei esta a mais simples.

//Classe abstrata 
public abstract class AbstractPagedList<T> {
    protected List<T> data;
    protected int total;
    
    @XmlTransient
    abstract public List<T> getData();
    
    @XmlTransient
    abstract public int getTotal();	
}

//Classe que implementa os métodos "genéricos" para um tipo específico
public class ClientePagedList extends AbstractPagedList<Cliente> {

    public ClientePagedList() {
    }

    public ClientePagedList(List<Cliente> data, int total) {
        super.data = data;
        super.total = total;
    }
    
    @Override
    @XmlElement    
    public List<Cliente> getData() {
        return data;
    }

    @Override
    @XmlElement
    public int getTotal() {
        return total;
    }
    
}

//Método do WebService
@WebMethod(operationName = "listClientes")
public ClientePagedList listClientes() {
    return new ClientePagedList(new ArrayList<Cliente>(), 0);
}
Criado 10 de abril de 2013
Ultima resposta 11 de abr. de 2013
Respostas 2
Participantes 2