WebService - Lista de Entidades (List of Entity)

4 respostas
douglasrusso

Olá,

O que existe de errado com o meu código, ou será que o que eu estou tentando fazer não é possível.

@Entity
public class Pessoa implements Serializable {
    private Long id;
    private String nome;
    public Pessoa(String nome) {
        this.nome = nome;
    }
@Stateless()
@WebService()
public class UCManterPessoas {
    @WebMethod
    public List obterPessoas() {
        // apenas para teste
        int n = 10;
        List l = new ArrayList(n);
        
        for(int i = 0 ; i < n ; i ++) {
            l.add(new Pessoa("Lucio"));
        }
        return l;
    }
}

Método no Cliente:

public List obterPessoas()
    {
        List l = null;
        try
        { // Call Web Service Operation
            UCManterPessoasWSService service = new UCManterPessoasWSService();
            UCManterPessoasWS port = service.getUCManterPessoasWSPort();
            l = port.obterPessoas();
        }
        catch (java.lang.Exception ex) {
        }
        
        return l;
    }

Enfatizo que minha dificuldade está em retornar uma classe Pessoa que contém seus próprios atributos. Este mesmo código funciona corretamente se eu substituir o conteudo do meu ArrayList para apenas Strings, no lugar da classe entidade Pessoa.

Obrigado!

4 Respostas

E

E aí Douglas tudo bom??

Cara to começando agora com web service também, mas com list também não consegui o que tive qeu fazer vou transformar ele em Array de Objetos tipo assim

public class UCManterPessoas {

@WebMethod

public Pessoa[] obterPessoas() {

// apenas para teste

int n = 10;

Pessoa[] l = new Pessoa[n];
for(int i = 0 ; i < n ; i ++) {
        l[i] = (new Pessoa("Lucio"));
    }
    return l;
}

}

E depois retonar ele… bom nao sei se ajuda mas acho que é isto, hehe,

att…

Evandro

douglasrusso

Ola Evandro,

Também estou iniciando os estudos com WebService, porém já conheço bem o EJB3, mas aqui no estágio é requisito trabalhar com interoperabilidade nas diferentes linguagens.

Obrigado pela Ajuda! Porém, no lado cliente, a classe Pessoa fica sem o atributo “nome”, mantendo apenas o atributo ID.

O que devo fazer, se possível coloque seu código aqui, tanto lado cliente como servidor!

Obrigado, Evandro!

E

Boa tarde Douglas,

Então aqui o lado cliente estou fazendo testes em outra liguagem Visual DataFlex conhece?? acho dificil ein.. hehehe.. dataflex já teve o seu tempo.. hehe

Então não sei se fiz da maneira correta mas tinha que fazer o negocio andar a maneira como encontrei foi fazer meu WebService chamando algumas funções de outra classe que já convertiam o objeto para Array de objetos[]

Class Usuario {
    private Long usuarioId;
    private String nomeUsuario;
}

Class UsuarioService {

     public Usuario[] getAll {
        int iCount = 0;
        UsuarioDAO usuarioDAO = new UsuarioDAO();
        
        List<Usuario> values = usuarioDAO.getAll();

        Usuario[] objetos = new Usuario[values.size];

        Iterator<Usuario>  i = values.iterator();
       
        while(i.hasNext()) {
               Usuario usuario = (Usuario) i.next();
               objetos[iCount] = usuario;
               iCount++;
        }
        return objetos;
     }

}

Neste caso que lhe passei ele vai passar pro Web Service todos os atributos do usuario, naquele exemplo usuarioId e nomeUsuario, se tivessem mais eles tbem seriam passados.

Então daí no lado cliente eu recebo todos os atributos da classe usuario e consigo trabalhar com ele daí.

Bom espero que ajude qualquer coisa estamos aí,

att...

Evandro

douglasrusso

Ok Evandro,

Consegui resolver o problema, obrigado, Evandro!

Att,

Douglas

Criado 22 de agosto de 2007
Ultima resposta 23 de ago. de 2007
Respostas 4
Participantes 2