Professor, Se o conteudo já é representação do produto, por quê se faz necessário informar o parametro: @PathParam("produtoId") Long produtoId ? Considerando o trecho abaixo:
@Path("{id}/produtos/{produtoId}")
@PUT
public Response atualizaProduto(String conteudo,@PathParam("id") Long id, @PathParam("produtoId") Long produtoId){
Carrinho carrinho= new CarrinhoDAO().busca(id);
Produto produto = (Produto) new XStream().fromXML(conteudo);
System.out.println(produto);
carrinho.troca(produto);
return Response.ok().build();
}