Web service + interface

5 respostas
M

Opa pessoal,

Estou tentando enviar uma List<List> para um webservice e estou tendo serios problemas … Ja tentei enviar como object mas tambem sem sucesso. Segue abaixo o codigo do client/server side:
o Erro : java.util.List is an interface, and JAXB can’t handle interfaces.

WS :

@WebService()
public class bioStrokeWs {
    private bioDA DA = new bioDA();
    private TratarInvertavalos ti = new TratarInvertavalos();


    @WebMethod(operationName = "getUsuDb")
    public boolean operation(@WebParam(name = "usu_nome") String usu_nome) {
        return DA.verificaUsu(usu_nome);
    }

    @WebMethod(operationName = "checaTabela")
    public String getNome() {
        return DA.checaTable();
    }

    @WebMethod(operationName = "usu_insert")
    public String usuInsert(@WebParam(name = "usu_login") String usu_login,@WebParam(name = "usu_nome") String usu_nome,@WebParam(name = "rList") List<List<DataBioStroke>> rList ) {
        return DA.cadastrar(usu_login, usu_nome, rList);
    }

}

Cliente :

public class bioSdkBridge {
    
    public String usu_insert(String login, String nome, List<List<DataBioStroke>> rL) {
        java.lang.String result = null;
        try { // Call Web Service Operation
            br.com.biows.BioStrokeWsService service = new br.com.biows.BioStrokeWsService();
            br.com.biows.BioStrokeWs port = service.getBioStrokeWsPort();
            java.lang.String usuLogin = login;
            java.lang.String usuNome = nome;
            List<List<DataBioStroke>> rList = rL;
            result = port.usuInsert(usuLogin, usuNome, rList);
            System.out.println("Result = "+result);
        } catch (Exception ex) {
        }
        return result;
    }

    public String checaTabela() {
        java.lang.String result = null;
        try { // Call Web Service Operation
            br.com.biows.BioStrokeWsService service = new br.com.biows.BioStrokeWsService();
            br.com.biows.BioStrokeWs port = service.getBioStrokeWsPort();
            result = port.checaTabela();
            System.out.println("Result = " + result);
        } catch (Exception ex) {
           System.out.println("Exceção:" + ex);
        }
        return result;
    }
}

Se alguem poder me da um help eu agradeco !!

5 Respostas

thiagocg

Não entendo de webservices, mas pelo erro que vc postou aparentemente seria o fato do JAXB não aceitar uma interface, tente trocar seu List por um ArrayList, e veja se o erro continua o mesmo.

[]'s

M

ArrayList<ArrayList> tbm nao funfa !!!

olitree

Olá mcquase.

Recentemente também me surgiu o mesmo problema, andei a pesquisar e uma das soluções que me agradou bastante, e que resolveu o problema foi a ulitização pacote XSTREAM no meu projecto.
Olhe nele com atenção e vai ver que o seu problema fica resolvido.
Como ele actua, o XSTREAM pega num Objecto e Mapea este para XML, para ser transportado com String, em vez de List ou ArrayList, do outro lado pega nessa String ou seja o XML e passa para objecto, quer melhor que isto?

http://xstream.codehaus.org/tutorial.html

Cps,

António Oliveira

Jair_Rillo_Junior

Só para confirmar. Você está usando JAX-WS, certo?
Porque se for JAX-RPC, isso realmente não irá funcionar. Você não pode retornar uma List, Collection, Enum via JAX-RPC. Agora se for via JAX-WS, deveria funcionar

M

Opa pessoal vlw pela ajuda.
Consegui serializando minha classe e mandando atraves de um Array de Bytes.
Vlw pela ajuda mais uma vez

Criado 3 de março de 2010
Ultima resposta 9 de mar. de 2010
Respostas 5
Participantes 4