Esta acontecendo três erros:
- Se eu adiciona alguma empresa e tempo remove-la depois da o erro 500 2.Ao tentar excluir a ultima empresa cai no erro 500 3 no comando "lista.remove(emp)" se coloco sem o "emp" não compila.
 
public class Banco {
    private static List<Empresa> lista = new ArrayList<Empresa>();
    private static Integer chaveSequencial = 1;
    static {
        Empresa e1 = new Empresa();
        e1.setId(chaveSequencial++);
        e1.setNome("Alura");
        Empresa e2 = new Empresa();
        e2.setId(chaveSequencial++);
        e2.setNome("RST");
        lista.add(e1);
        lista.add(e2);
    }
    public void adiciona(Empresa empresa) {
        empresa.setId(Banco.chaveSequencial++);
        Banco.lista.add(empresa);
    }
    public List<Empresa> getEmpresa() {
        return Banco.lista;
    }
    public void removeEmpresa(Integer id) {
        Iterator<Empresa> it = lista.iterator();
        while (it.hasNext()) {
            Empresa emp = it.next();
            if (emp.getId() == id) {
                lista.remove(emp);
            }
        }
    }
}
public class RemoveEmpresaServlet extends HttpServlet { private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String paramId = request.getParameter("id");
    Integer id = Integer.valueOf(paramId);
    Banco banco = new Banco();
    banco.removeEmpresa(id);
}}
public class ListaEmpresasServlet extends HttpServlet { private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response) 
        throws ServletException, IOException {
    Banco banco = new Banco();
    List<Empresa> lista = banco.getEmpresa();
    request.setAttribute("empresas", lista);
    RequestDispatcher rd = request.getRequestDispatcher("/listaEmpresas.jsp");
    rd.forward(request, response);
}}
public class NovaEmpresaServlet extends HttpServlet { private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    System.out.println("Cadastrando nova empresa");
    String nomeEmpresa = request.getParameter("nome");
    String paramDataEmpresa = request.getParameter("data");
    Date dataAbertura = null;
    try {
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        dataAbertura = sdf.parse(paramDataEmpresa);
    } catch (ParseException e) {
        throw new ServletException(e);
    }
    Empresa empresa = new Empresa();
    empresa.setNome(nomeEmpresa);
    empresa.setDataAbertura(dataAbertura);
    Banco banco = new Banco();
    banco.adiciona(empresa);
    request.setAttribute("empresa", empresa.getNome());
    response.sendRedirect("listaEmpresas");
}}
`