WEBSERVICE retornando Objetos

15 respostas
S

Estou tentando aprender a criar um webservice. Já li bastante material e já consegui criar o cliente e servidor bem simples. No lado do servidor consegui criar um método que retornasse um objeto (tipo complexo de dados no wsdl). Porém quando eu tento criar, por exemplo, um objeto cliente que possua um objeto endereços não consigo.
Alguém pode me ajudar?

15 Respostas

Tchello

Seja mais específico.
Qual erro está lançando?
O que exatamente você está tentando fazer?

Rafael_Nunes

Eu fiz isso como Axis2 utilizando esses complex-types. Não cheguei a testar com nenhum outro framework.

Ps: Tem certeza que você quer retornar um Objeto via WS? Eu particularmente sempre evitei/substitui por outra alternativa.

danieldestro

Seus objetos são “Serializable”?

S

Tchello:
Seja mais específico.
Qual erro está lançando?
O que exatamente você está tentando fazer?

Por exemplo:
Eu tenho dois Objetos um ENDERECO(Cidade, bairro, rua) e outro cliente (nome, cpf, ENDERECO).

Tentei fazer ele retornar o objeto endereco somente para teste e consegui sem problemas.
Mas quando tento retornar o objeto cliente pelo netbeans não compila…
retorna o seguinte erro.

C:…\nbproject\jaxws-build.xml:18: Error starting wsgen:

danieldestro

Passa o erro completo (mensagem e/ou stack trace).

S

não.

danieldestro

Então faça:

import java.io.Serializable;

public class Cliente implements Serializable {
// ...
}

E na outra classe idem.

S

init:
deps-module-jar:
deps-ear-jar:
deps-jar:
library-inclusion-in-archive:
library-inclusion-in-manifest:
Compiling 1 source file to C:\Documents and Settings\Alfasoft\Meus documentos\NetBeansProjects\ServicoESTAR\build\web\WEB-INF\classes
wsgen-init:
wsgen-ServidorESTAR:
C:\Documents and Settings\Alfasoft\Meus documentos\NetBeansProjects\ServicoESTAR\nbproject\jaxws-build.xml:18: Error starting wsgen:
FALHA NA CONSTRUÇÃO (tempo total: 6 segundos)

S

vou adicionar duas classes que eu criei agora para teste.....
-------------------------------------------------------------------
Filho

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Classes;

import java.io.Serializable;

/**
 *
 * @author Alfasoft
 */
public class testeFilho implements Serializable{
    public String nome2;
    public String codigo2;

    public testeFilho() {
    }
    
    public String getCodigo2() {
        return codigo2;
    }

    public String getNome2() {
        return nome2;
    }

    public void setCodigo2(String codigo2) {
        this.codigo2 = codigo2;
    }

    public void setNome2(String nome2) {
        this.nome2 = nome2;
    }
}

-------------------------------------------------------------------
Pai

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Classes;

/**
 *
 * @author Alfasoft
 */
public class testePai {
    public String nome;
    public testeFilho filho;

    public testeFilho getFilho() {
        return filho;
    }

    public void setFilho(testeFilho filho) {
        this.filho = filho;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }
}

-------------------------------------------------------------------

WEBSERVICE

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ws.servidor;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import Classes.*;
import com.thoughtworks.xstream.XStream;

/**
 *
 * @author Alfasoft
 */
@WebService()
public class ServidorESTAR {

    private static Login logando;
    private static boolean resultado;

    /**
     * Operação de serviço web
     */
    @WebMethod(operationName = "listaTrechos")
    public String listaTrechos(@WebParam(name = "cod_setor") String cod_setor) {
        XStream stream = new XStream();
        Setor objSetor = new Setor();
        objSetor.BuscaSetor(cod_setor);

        stream.alias("setor", Setor.class);
        String xml = stream.toXML(objSetor);
        return xml;
    }

    /**
     * Operação de serviço web
     */
    @WebMethod(operationName = "soma")
    public String soma(@WebParam(name = "w") int w) {
        //TODO grava o seu código de implementação aqui:
        return "123";
    }

    /**
     * Operação de serviço web
     */
    @WebMethod(operationName = "teste")
    public testePai teste() {
        testePai teste1 = new testePai();       
        teste1.setNome("nome");
        testeFilho tst = new testeFilho();
        tst.setCodigo2("codigo2");
        tst.setNome2("nome2");
        teste1.setFilho(tst);
        return teste1;
    }
    
}

---------------------------------------------------------------

Algo parecido com isso....

T

“error starting wsgen” quer dizer que o wsgen.exe não está no seu path. Ele costuma ficar junto com o javac.exe.

S

caso eu comente o methodo que esta retornando o objeto ele compila normal.

S

Conseguiu entender o problema?

S

thingol:
“error starting wsgen” quer dizer que o wsgen.exe não está no seu path. Ele costuma ficar junto com o javac.exe.

em qual pasta este arquivo wsgen.exe tem que ficar?

T

Ele fica na mesma pasta em que você encontra o javac.exe

S

ja estava la…

Criado 26 de fevereiro de 2009
Ultima resposta 26 de fev. de 2009
Respostas 15
Participantes 5