Redirecionamento no Servlet

Pessoal trabalhava com o Resin e passei a utilizar o Tomcat. Tenho uma servlet que faz um forward para uma pagina .jsp. No Resin funcionava, agora no Tomcat está dando erro. O código está aí abaixo:

else if ( ret == 1 ){

RequestDispatcher nextView = null;
HttpSession sessao = req.getSession(true);
sessao.setAttribute(“quadro”,quadrosetorial);
sessao.setAttribute(“matricula”,matricula);
nextView = req.getRequestDispatcher("…/contra/opcoes.jsp");
nextView.forward(req,res);
}

Como disse no Resin funciona, no Tomcat não. O erro ocorre na última instrução, ou seja, no nextView.forward(req,res);
Alguém já viu alguma coisa assim e sabe onde pode estar o erro e como posso resolvê-lo?

A sintaxe está certa, qual a mensagem de erro?
Talvez ele não tenha conseguido encontrar esse “…/contra/opcoes.jsp”, já tentou fazer por URL absoluta (começando na raiz da aplicação e com /)?

A mensagem é essa aí:

java.lang.NullPointerException
at LoginServlet.doPost(LoginServlet.java:59)

…linha 59 é exatamente aquela instrução que mencionei anteriormente.

Deu NullPointerException porque o objeto nextView está null, o que significa que a causa do erro está na linha de cima.
Ainda acho que o problema está na sua URL. Tente, apenas para testar, informar qualquer outra coisa que você tenha certeza que ele vai encontrar.

A url que, teoricamente, eu acessaria seria a seguinte:

http://localhost:8080/contra/opcoes.jsp

Porém não acesso, pois tenho que passar pelo login primeiro. Se eu tentar acessá-la direto, serei remetido para a página de login.
Tentei colocar essa url mas deu o seguinte erro:

type Status report

message /http:/localhost:8080/contra/opcoes.jsp

description The requested resource (/http:/localhost:8080/contra/opcoes.jsp) is not available.

Quando dou o submit no meu form e chama a servlet a url fica assim:
http://localhost:8080/contra/servlet/LoginServlet
Minha página opcoes.jsp está no nível de ‘contra’. Será que estou errando no níveis que devo voltar até chegar nela?

Contra é o nome da aplicação?
Se for, a URL absoluta é /opcoes.jsp

O problema foi justamente que a aplicação não consegue enxergar nada que está antes do contra/, então aquele seu…/contra/ ele não encontrou.

Funcionou colocando só /opcoes.jsp, a página aparece certinha porém o Internet Explores permanece carregando e no console do Tomcat agora está aparecendo a seguinte mensagem de erro. Você já viu esse erro?

java.lang.IllegalStateException: Current state = FLUSHED, new state = CODING_END

    at java.nio.charset.CharsetEncoder.throwIllegalStateException(CharsetEnc

oder.java:933)
at java.nio.charset.CharsetEncoder.encode(CharsetEncoder.java:529)
at sun.nio.cs.StreamEncoder$CharsetSE.flushLeftoverChar(StreamEncoder.ja
va:356)
at sun.nio.cs.StreamEncoder$CharsetSE.implClose(StreamEncoder.java:413)
at sun.nio.cs.StreamEncoder.close(StreamEncoder.java:158)
at java.io.OutputStreamWriter.close(OutputStreamWriter.java:222)
at java.io.PrintWriter.close(PrintWriter.java:137)
at org.apache.catalina.connector.ResponseBase.finishResponse(ResponseBas
e.java:482)
at org.apache.catalina.connector.HttpResponseBase.finishResponse(HttpRes
ponseBase.java:236)
at org.apache.catalina.connector.http.HttpResponseImpl.finishResponse(Ht
tpResponseImpl.java:288)
at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcesso
r.java:1039)
at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.ja
va:1107)
at java.lang.Thread.run(Thread.java:536)

A causa desse erro basicamente é você iniciar uma “nova transmissão” quando você já mandou o header para o cliente.
Tem vários métodos que lançam essa exceção quando usados no momento errado, como por exemplo o sendRedirect.

E como posso resolver esse erro, você tem idéia, pode me ajudar?

Tente isso:

RequestDispatcher dispatcher;
dispatcher = getServletContext().getRequestDispatcher("/minha-pagina.jsp");
dispatcher.forward(request, response);