Ce dommage est causé par java.lang.IllegalStateException: Réponse déjà engagés
J'ai continuellement obtenir l'erreur ci-dessous sur mon weblogic 10.3 journaux de la console
java.lang.IllegalStateException: Response already committed
at weblogic.servlet.internal.ServletResponseImpl.objectIfCommitted(ServletResponseImpl.java:
1462)
at weblogic.servlet.internal.ServletResponseImpl.sendError(ServletResponseImpl.java:601)
at org.apache.struts.action.RequestProcessor.processMapping(RequestProcessor.java:658)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:193)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
Tronquée. voir le fichier journal pour compléter stacktrace
Je me demandais ce dommage est causé par ce si laissé non ? Cette erreur a été dans mon application avant j'ai rejoint l'équipe, est-ce suffisamment graves pour constituer des "Besoins correctif immédiat" ?
Vous devez vous connecter pour publier un commentaire.
Struts est open source. Il suffit de cocher la
RequestProcessor
la source avant de la ligne de 658 (comme indiqué dans la stacktrace):Voir le commentaire:
No mapping can be found to process this request
. C'est la cause racine du problème. Mais lesendError()
appel pour afficher un message d'erreur ne peut pas être terminée, car la réponse est déjà engagée. Apparemment il y a deux choses un échec: il y a une cartographie manquant et le travail par défaut de Struts cartographie a été pris en charge par programmation de manière incorrecte.Cela signifie que l'application essayé d'envoyer un en-tête HTTP, après la réponse a été envoyée. Quel type de préjudice, cela ne dépend de l'application.
La plupart du temps un manque d'en-tête HTTP qui peut être toléré par le navigateur, mais, par exemple, si vous souhaitez spécifier un spécial
Content-Type
, cela pourrait être quelque chose d'un problème.Néanmoins, je vous suggère de trouver la cause racine du problème afin d'éviter toute confusion ou "étrange" des résultats.
Il dépend, le sens de l'erreur, c'est que vous avez écrit à votre objet HttpResponse et a commencé à envoyer la réponse (par appel à la méthode flush(), sendError() ou sendRedirect()) afin d'éviter tout ajout du flux de la réponse (ou en-têtes, etc) ou encore l'action ultérieure (par exemple, vous avez appelé la méthode flush() et maintenant, vous êtes à l'appel de sendError()) demande sera perdu.