Boa Noite.
Estou estudando JAX-WS e estou com um problema, consigo consumir um Rest de outra aplicação, fiz uma classe java de teste em outro projeto e funcionou, mas ao tentar consumir o mesmo por JQuery obtive o seguinte erro de crossdmain, pesquisei em como habilitar no java, tentei varias soluções e nada.......
cheguei a ver a interface "ContainerResponseFilter" e nada, ao implementar a mesma obtive o mesmo retorno:
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.
@Override
    public void filter(ContainerRequestContext request, ContainerResponseContext response) throws IOException {
        response.getHeaders().add("Access-Control-Allow-Origin", "*");
        response.getHeaders().add("Access-Control-Allow-Headers", "origin, content-type, accept, authorization");
        response.getHeaders().add("Access-Control-Allow-Credentials", "true");
        response.getHeaders().add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD");
        response.getHeaders().add("Access-Control-Max-Age", "1209600");
    }
tambem tentei alterar o jquery para usar JSONP, mas não obtive sucesso....
estrnhamente com jsonp o console do navegador exibe o erro "Uncaught SyntaxError: Unexpected token :", mas ao clicar no link para me enviar a linha de erro ele me exibe o json montado, assim como nos meus testes em java:
{"lista_produtos":[{"preco":4000.0,"id":6237,"nome":"Videogame 4","quantidade":1},{"preco":60.0,"id":3467,"nome":"Jogo de esporte","quantidade":2}],"rua":"Rua Vergueiro 3185, 8 andar","cidade":"Sao Paulo","id":1}
formatado:
{
    "lista_produtos": [{
        "preco": 4000.0,
        "id": 6237,
        "nome": "Videogame 4",
        "quantidade": 1
    }, {
        "preco": 60.0,
        "id": 3467,
        "nome": "Jogo de esporte",
        "quantidade": 2
    }],
    "rua": "Rua Vergueiro 3185, 8 andar",
    "cidade": "Sao Paulo",
    "id": 1
}
codigo jquery:
$(document).ready(function() {
            $.ajax({
                url: "http://localhost:8080/TesteRest/ws/carrinhos/1",
                dataType: 'jsonp',
                crossDomain: true,
                type: 'GET'                
            }).then(function(data) {
                var atributos = {id: 'minhaDiv',class: 'minhaClasse',html: "data"};
                $('<li>', atributos).appendTo('#corpo');
            });
        });
codigo rest:
@Path("{id}")
    @GET
    @Produces({MediaType.APPLICATION_JSON, "application/json", "application/javascript"})
    public String busca(@PathParam("id") Long id){
        String ret = "";
        List<Carrinho> listaBanco = null;
        if(id==0){
            Gson json = new Gson();
            listaBanco = new CarrinhoDAO().getListaBanco();
            ret = json.toJson(listaBanco); 
        }else{
            Carrinho carrinho = new CarrinhoDAO().busca(id);
            ret = carrinho.toJson();
        }
        return ret;
    }
gostaria de saber se tem algum detalhe q perdi em minha busca, ou onde eu errei......
se possível gostaria de saber fazer de ambas as formas, pesquisei mas nada q achei funcionou.....