Jax-ws + dom4j

2 respostas
A

Galera,
Estou começando meus estudos no mundo dos WebServices e estou utilizando como plataforma o JAX-WS.
Fiz aqueles exemplos de calculadora e até alguns WS fazendo pesquisas em banco de dados. com hibernate.
Minha dúvida é. Quando declaro um método no meu WS e indico que o retorno é uma lista de funcionários (ex: List), como faço para que meu cliente leia esse resultado como XML e não como List. Isso é fundamental, pois meu cliente não deve ter conhecimento de aspectos internos como classes que meu WS utilizou para fazer a pesquisa. Sem falar que outras tecnologias que não sejam Java vão poder utilizar esse WebService.
Fiz um request utilizando o SoapUI e ele me retornou um XML direitinho. Gostaria de fazer isso através do meu cliente.
Abaixo está meu cliente.

try {
            org.ws.FuncionarioWSService service = new org.ws.FuncionarioWSService();
            org.ws.FuncionarioWS port = service.getFuncionarioWSPort();
            java.util.List<org.ws.Funcionario> result = port.recuperarFuncionarios();
            for(org.ws.Funcionario aux : result){
                System.out.println(aux.getNomeFuncionario);
            }
        } catch (Exception ex) {
            System.out.println("exception" + ex);
        }

2 Respostas

Alexandre_Saudate

alissonmn:
Galera,
Estou começando meus estudos no mundo dos WebServices e estou utilizando como plataforma o JAX-WS.
Fiz aqueles exemplos de calculadora e até alguns WS fazendo pesquisas em banco de dados. com hibernate.
Minha dúvida é. Quando declaro um método no meu WS e indico que o retorno é uma lista de funcionários (ex: List), como faço para que meu cliente leia esse resultado como XML e não como List. Isso é fundamental, pois meu cliente não deve ter conhecimento de aspectos internos como classes que meu WS utilizou para fazer a pesquisa. Sem falar que outras tecnologias que não sejam Java vão poder utilizar esse WebService.
Fiz um request utilizando o SoapUI e ele me retornou um XML direitinho. Gostaria de fazer isso através do meu cliente.
Abaixo está meu cliente.

try { org.ws.FuncionarioWSService service = new org.ws.FuncionarioWSService(); org.ws.FuncionarioWS port = service.getFuncionarioWSPort(); java.util.List<org.ws.Funcionario> result = port.recuperarFuncionarios(); for(org.ws.Funcionario aux : result){ System.out.println(aux.getNomeFuncionario); } } catch (Exception ex) { System.out.println("exception" + ex); }

Não entendí muito bem o questionamento… vale lembrar que o Funcionario em questão vai ser regerado (o cliente não sabe em que linguagem o WS foi feito, logo, o Funcionario deve ser regerado para atender a Java). Assim, o cliente não vai conhecer a sua implementação de Funcionario, mas sim, o que foi exposto no WS. Quanto a outras tecnologias que usarão este WS, elas terão a própria maneira de interpretar esses dados, tudo bem?

[]´s

A

Obrigado asaudate,
Mas na verdade eu quero algo simples.
Perceba que na linha “04” eu instancio a variável “result” como sendo uma lista do tipo “org.ws.Funcionario”.
Eu não queria ter que instanciar essa lista com esse tipo. Eu queria recuperar como sendo um XML.

Criado 17 de fevereiro de 2010
Ultima resposta 18 de fev. de 2010
Respostas 2
Participantes 2