2
respostas

Problema nas anotações do WS

Ao implementar a classe Filtros como parâmetros do método getItens, o método fica vermelho apresentando mensagem de erro.

Web Method problem:Class br.com.aplicationws.estoque.modelo.item.ListaItens not public or does not allow instantiation Inspection info: Checks Java class used as web service or for reading / writing xml data (e.g. web service parameter class) to be instantiatable. The validation works in Java files.

2 respostas

Oi João,

Manda o código da sua classe ListaItens, por favor. Pela mensagem de erro aparentemente sua classe não está public:

package br.com.caelum.estoque.modelo.item;

import java.util.List;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class ListaItens {
    @XmlElement(name="item")
    private List<Item> itens;

    public ListaItens(List<Item> itens) {
        this.itens = itens;
    }

    ListaItens() {
    }

    public List<Item> getItens() {
        return itens;
    }

}

A mensagem aparece para o método getItens e cadastraItem.

package br.com.aplicationws.estoque.modelo.item;

import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import java.util.List;

@XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) public class ListaItens {

@XmlElement(name = "Item")
private List<Item> itens;

public ListaItens(List<Item> itens) {
    this.itens = itens;
}

ListaItens() { 
}

public List<Item> getItens() {
    return itens;
}

}

Classe filtros package br.com.aplicationws.estoque.modelo.item;

import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import java.util.List;

@XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) public class Filtros {

@XmlElement(name = "filtro")
private List<Filtro> filtros;

public Filtros(List<Filtro> filtros) {
    this.filtros = filtros;
}

public Filtros() {
}

public List<Filtro> getLista() {
    return filtros;
}

}

Classe item

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement public class Item {

private String codigo;
private String nome;
private String tipo;
private int quantidade;

Item() {
    super();
}

public Item(String codigo, String nome, String tipo, int quantidade) {
    super();
    this.codigo = codigo;
    this.nome = nome;
    this.tipo = tipo;
    this.quantidade = quantidade;
}

//Método getters e setters