Tomcat exception ne peut pas appeler sendError () après que la réponse a été engagée?

en faisant quelques opérations dans mon application j'ai eu

java.lang.IllegalStateException Ne peut pas appeler sendError()

quand je recharge la page à nouveau il fonctionne un certain temps correctement, mais après un certain temps encore il montre la même exception. Comment puis-je surmonter cette exception?

ci-Dessous est l'exception:

HTTP Status 500 - Cannot call sendError() after the response has been committed
type Exception report
message Cannot call sendError() after the response has been committed
description The server encountered an internal error that prevented it from fulfilling this request.
exception 
java.lang.IllegalStateException: Cannot call sendError() after the response has been committed
org.apache.catalina.connector.ResponseFacade.sendError(ResponseFacade.java:451)
org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:725)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.40 logs.

Struts.xml

<struts>
    <package name="default" extends="hibernate-default">
        <action name="addUser" method="add" class="com.demo.action.UserAction">
            <result name="input">/register.jsp</result>
            <result name="success" type="redirect">list</result>
        </action>
        <action name="list" method="list" class="com.demo.action.UserAction">
            <interceptor-ref name="basicStackHibernate" />
            <result name="success">/list.jsp</result>
        </action>
    </package>
</struts>
21
demandé sur ROMANIA_engineer 2013-12-28 14:30:22

6 réponses

cette erreur est un symptôme d'un autre problème, pas la cause profonde que vous recherchez.

Cette erreur explique pourquoi l'utilisateur ne peut pas être redirigé vers la page d'erreur. (Raison: le serveur a déjà vidé une partie du tampon de réponse vers le client - il est trop tard pour basculer/rediriger vers la page d'erreur.)

comme le signale le message d'erreur, vérifiez ailleurs dans votre Apache Tomcat 7 logs (ou déboguez votre application d'une autre manière) pour trouver ce qui lance un exception.

24
répondu Barett 2014-06-13 21:25:52

j'ai résolu cette erreur en ajoutant @jsonIgnore pour toutes les méthodes de lecture pour une Liste d'un autre objet

4
répondu Mohamed 2017-05-31 05:19:31

il s'agit d'une erreur courante et il peut y avoir plusieurs causes profondes qui peuvent être identifiées. Dans mon cas, j'ouvrais le fichier pdf à partir du service web et pour cela j'effectuais l'opération d'écriture dans le fichier en utilisant le tampon. Veuillez donc changer ci-dessous:

        File outfile = File.createTempFile("temp", ".pdf");

        OutputStream os=new FileOutputStream(outfile);
        byte[] buffer = new byte[1024];

        int length;
        /*copying the contents from input stream to
         * output stream using read and write methods
         */
        while ((length = is.read(buffer)) > 0){
            os.write(buffer, 0, length);
        }

        File outfile = File.createTempFile("temp", ".pdf");
        IOUtils.copy(is, new FileOutputStream(outfile));

et d'après ce que j'ai été en deçà de l'opération:

    javax.ws.rs.core.Response.ResponseBuilder responseBuilder = javax.ws.rs.core.Response
                .ok(outfile, MediaType.APPLICATION_OCTET_STREAM);
                responseBuilder.header("content-type","application/pdf");

             return responseBuilder.build();

et l'erreur résolue. Acclamations!

1
répondu Aman Goel 2017-10-31 06:13:55

si u utiliser les annotations like:@WebFilter,@WebServlet..., il suffit d'ajouter métadonnées-complete="true" dans le web.XML e.g

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xmlns="http://java.sun.com/xml/ns/javaee" 
         xmlns:web="http://java.sun.com/xml/ns/javaee" 
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
         id="WebApp_ID" metadata-complete="true" version="3.0">

J'espère que c'est votre besoin!

0
répondu Derry 2015-06-01 04:37:55

Vous pouvez essayer cette Annotation il aidera car il a corrigé mon problème.

Il va certainement aider si elle ne sera pas en mesure de vous aider, alors essayez de la modifier selon vos besoins.

@JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="id")
   @JsonIdentityReference(alwaysAsId=true)
0
répondu Dipen Chawla 2018-05-25 11:52:03

j'ai surmonté l'exception, vous pouvez vérifier la structure de votre table.J'exécute la requête sql produite par hibernate dans mysql. Comme l'exception,une exception a été levée.

[Err] 1054 - Unknown column 'this_.ID' in 'field list'

j'ai trouvé qu'un ID de champ manque dans la table.Ajoutez L'ID dans la table ,c'est bon. J'espère que c'est utile.

-2
répondu young 2017-01-06 10:10:37