Webservice Para Iniciante - ComplexType?

4 respostas
EderBaum

Minha duvida é o seguinte.

Já fiz um webservice neste estilo aqui:
@WebService
public class Hello { 
    @WebMethod
    public String sayHello(String name) {
        return "Hello" + name + ".";
    }
}
Fiz ele funcionar no Axis, GlassFish e CXF gerando o WSDL e fazendo a chamada por um cliente No entanto isso é muito básico para mim, pois preciso algo um pouco mais robusto e trabalhando com Objetos que seguem o Padrão Bean como:
@WebService
public class FornecedorService { 
    @WebMethod
    public Fornecedor cadastraFornecedor(Fornecedor f) {
        // LOGICA AQUI
        return f;
    }
}
onde a classe Fornecedor por exemplo seria algo como:
public class Fornecedor {
    private int id;
    private String nome;

    public int getId() {
        return id;
    }
    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }    
}

O problema é como mapear esta classe Fornecedor para aparecer no WSDL para então gerar o Cliente que fará o processo.
Alguma documentação que ou exemplo que possa me ser util?

4 Respostas

luizhcp

Bom dia.

Estou com a mesma dúvida. Será que alguém pode nos ajudar na implementação?

Abraços,
Luiz

EderBaum

Acabei fazendo algo na unha mesmo, tendo que trabalhar diretamente com “SOAPMessage” e serialização com JAXB

Você pode achar algo sobre SOAPMessage e JAXB no tutorial da SUN sobre JEE na parte de WebServices

mmilanez

Para quem está com o mesmo problema do colega (que não nos colocou a solução), basta colocar as indicações do complex type que irá no schema do XML do WSDL a ser consumido. Pelo exemplo citado, bastaria colocar no POJO as seguintes indicações:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Fornecedor", propOrder = {
    "id",
    "nome"})
public class Fornecedor {   
    private int id;   
    private String nome;   
  
    public int getId() {   
        return id;   
    }   
    public String getNome() {   
        return nome;   
    }   
    public void setNome(String nome) {   
        this.nome = nome;   
    }       
}

EderBaum:
Acabei fazendo algo na unha mesmo, tendo que trabalhar diretamente com “SOAPMessage” e serialização com JAXB

Você pode achar algo sobre SOAPMessage e JAXB no tutorial da SUN sobre JEE na parte de WebServices

H

Então o que você disse indiretamente ele só aceita um objeto String como parametro.

Se sim , você poderia receber uma String contendo o json dentro onde você poderia transforma-lo e utilizalo depois normalmente como um objeto.

Criado 4 de abril de 2008
Ultima resposta 6 de nov. de 2008
Respostas 4
Participantes 4