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?!