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?
WEBSERVICE retornando Objetos
15 Respostas
Seja mais específico.
Qual erro está lançando?
O que exatamente você está tentando fazer?
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.
Seus objetos são “Serializable”?
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:
Passa o erro completo (mensagem e/ou stack trace).
não.
Então faça:
import java.io.Serializable;
public class Cliente implements Serializable {
// ...
}
E na outra classe idem.
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)
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....
“error starting wsgen” quer dizer que o wsgen.exe não está no seu path. Ele costuma ficar junto com o javac.exe.
caso eu comente o methodo que esta retornando o objeto ele compila normal.
Conseguiu entender o problema?
“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?
Ele fica na mesma pasta em que você encontra o javac.exe
ja estava la…