1
resposta

Erro ao publicar o WS!

Ao tentar publicar o WS o mesmo informou essa stack:

EstoqueWS rodando: http://localhost:8080/estoquews?wsdl
Exception in thread "main" com.sun.xml.internal.ws.spi.db.DatabindingException: com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
java.util.List é uma interface e JAXB não pode tratar interfaces.
    this problem is related to the following location:
        at java.util.List

    at com.sun.xml.internal.ws.db.glassfish.JAXBRIContextFactory.newContext(JAXBRIContextFactory.java:90)
    at com.sun.xml.internal.ws.spi.db.BindingContextFactory.create(BindingContextFactory.java:167)
    at com.sun.xml.internal.ws.model.AbstractSEIModelImpl$1.run(AbstractSEIModelImpl.java:203)
    at com.sun.xml.internal.ws.model.AbstractSEIModelImpl$1.run(AbstractSEIModelImpl.java:176)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.xml.internal.ws.model.AbstractSEIModelImpl.createJAXBContext(AbstractSEIModelImpl.java:176)
    at com.sun.xml.internal.ws.model.AbstractSEIModelImpl.postProcess(AbstractSEIModelImpl.java:95)
    at com.sun.xml.internal.ws.model.RuntimeModeler.buildRuntimeModel(RuntimeModeler.java:309)
    at com.sun.xml.internal.ws.db.DatabindingImpl.<init>(DatabindingImpl.java:85)
    at com.sun.xml.internal.ws.db.DatabindingProviderImpl.create(DatabindingProviderImpl.java:59)
    at com.sun.xml.internal.ws.db.DatabindingProviderImpl.create(DatabindingProviderImpl.java:43)
    at com.sun.xml.internal.ws.db.DatabindingFactoryImpl.createRuntime(DatabindingFactoryImpl.java:105)
    at com.sun.xml.internal.ws.server.EndpointFactory.createSEIModel(EndpointFactory.java:453)
    at com.sun.xml.internal.ws.server.EndpointFactory.create(EndpointFactory.java:269)
    at com.sun.xml.internal.ws.server.EndpointFactory.createEndpoint(EndpointFactory.java:144)
    at com.sun.xml.internal.ws.api.server.WSEndpoint.create(WSEndpoint.java:563)
    at com.sun.xml.internal.ws.api.server.WSEndpoint.create(WSEndpoint.java:545)
    at com.sun.xml.internal.ws.transport.http.server.EndpointImpl.createEndpoint(EndpointImpl.java:308)
    at com.sun.xml.internal.ws.transport.http.server.EndpointImpl.publish(EndpointImpl.java:231)
    at com.sun.xml.internal.ws.spi.ProviderImpl.createAndPublishEndpoint(ProviderImpl.java:126)
    at javax.xml.ws.Endpoint.publish(Endpoint.java:240)
    at br.com.alura.ws.estoque.PublicaWS.main(PublicaWS.java:21)

Mas ele só gera a stack quando eu adiciono o BARE no ParameterStyle !

@SOAPBinding(style = Style.DOCUMENT, use = Use.LITERAL, parameterStyle = ParameterStyle.BARE)

Meu estoqueWS esta assim:

@WebService
@SOAPBinding(style = Style.DOCUMENT, use = Use.LITERAL, parameterStyle = ParameterStyle.BARE)
public class EstoqueWS {
    private ItemDao itemDAO = new ItemDao();

    @WebMethod(operationName = "TodosItens")
    @WebResult(name = "item")
    @ResponseWrapper(localName = "itens")
    @RequestWrapper(localName = "listaItens")
    public List<Item> getItens(@WebParam(name = "filtros") Filtros filtros) {
        System.out.println("Chamando getItens() -> todosItens");

        List<Filtro> listaFiltros = filtros.getLista();

        return itemDAO.todosItens(listaFiltros);
    }

    @WebMethod(operationName = "CadastrarItens")
    @WebResult(name = "item")
    public Item cadastrarItens(@WebParam(name = "tokenUser", header = true) TokenUsuario user,
            @WebParam(name = "item") Item item) throws AutorizacaoException {
        System.out.println("Cadastrando item" + item + ", Token " + user);

        boolean valido = new TokenDao().validarUser(user);

        if (!valido) {
            throw new AutorizacaoException("Autorização falhou!");
        }

        new ItemValidador(item).validate();

        this.itemDAO.cadastrar(item);

        return item;
    }
}

Alguém sabe me informar o porque desse erro?!

1 resposta

Tenta alterar de List para ArrayList na interface e na classe de implementação que a exceção poderá ser resolvida

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software