Erro Servlet.service() for servlet [default] in context

2 respostas
A
Ola pessoal, estou desenvolvendo uma aplicação java com struts2 e hibernate, e durante a utilização da aplicação acontece o seguinte erro:
24/10/2011 11:11:36 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet [default] in context with path [/cmc] threw exception
java.lang.IllegalStateException: Cannot call sendError() after the response has been committed
	at org.apache.catalina.connector.ResponseFacade.sendError(ResponseFacade.java:443)
	at org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:770)
	at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:505)
	at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
	at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:964)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:304)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

Notei que ele sempre acontece quanto é redirecionado para outra action.

@Action(value = "addRegistroCmc", results = {@Result(name = "OK", type = "redirectAction", params = {
			"actionName", "listaRecebidos" }) }, interceptorRefs = { @InterceptorRef("seguranca") })			
	public String execute() {
		
		registroCmc.setRe(colaborador.getRe());
		registroCmc.setEmpresa(colaborador.getEmpresa());
		registroCmc.setStatus("ENCAMINHADO");
		
		new RegistroCmcDAO().criaRegistroCmc(registroCmc);
						
		return "OK";  //LOGO APOS DO RETORNO DO OK O ERRO ACONTECE
		
	}
Action chamada, esta action carrega uma lista com os registros encontrados, porem apos o erro a pagina não é atualizada, e atualiza somente no F5:
private Usuario usuario;
	private List<RegistroCmc> registroCmc;

	@Action(value = "listaDestino", results = { @Result(name = "OK", location = "listaDestino.jsp") }, interceptorRefs = { @InterceptorRef("seguranca") })
	public String execute() {

		usuario = new UsuarioDAO().buscaId(usuario.getIdUsuario());

		int[] areas = idArea(usuario.getAreas());

		registroCmc = new RegistroCmcDAO().listaDestinoCmc(areas);

		return "OK";
	}

	public List<RegistroCmc> getRegistroCmc() {
		return registroCmc;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

Se alguém puder que ajudar ficarei muito grato.
Abraços
Anderson Quinteiro

2 Respostas

A

O pessoal alguma ideia do que seja??

L

Topico antigo… mas, caso alguem ainda precise.

O erro provavelmente é ocasionado por algum Filter que esteja sendo utilizado, onde neste Filter você tenta dar um chain.doFilter(request, response); depois de redirecionar para uma pagina/action deste mesmo Filter.

Exemplo:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		String parameter = getParameter(request);
		String resposta   = getResponse(request, response, parameter);
		((HttpServletResponse)response).sendRedirect(resposta);
		chain.doFilter(request, response);
	}
Criado 24 de outubro de 2011
Ultima resposta 21 de mar. de 2012
Respostas 2
Participantes 2