У этого сервлета слишком много обязанностей.Он тесно связан .Измените код доступа к данным в отдельный класс, чтобы вы могли повторно использовать его в и классе сервлета и компоненте JSF.
Итак, в основном :
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Long id = Long.valueOf(request.getParameter("id"));
List<Product> products = productDAO.list(id);
request.setAttribute("products", products);
request.getRequestDispatcher("products.jsp").forward(request, response);
}
И:
@ManagedProperty(value="#{param.id}")
private Long id;
private List<Product> products; // +getter
@PostConstruct
public void init() {
this.products = productDAO.list(id);
}
, чтобы они могли работать независимо.