L'appel Ajax avorté donne à ClientAbortException / pipe cassée dans le journal du serveur: Comment attraper / supprimer?
j'exécute un serveur Jboss avec, entre autres, un service Web JAX-RS (en utilisant le resteasy-2.3.6.Final livré avec Jboss / EAP).
quand un client interrompt un appel vers le serveur, le Resteasy SynchronousDispatcher
peut (évidemment) pas envoyer la réponse au client qui provoque une série d'erreurs à l' [SEVERE]
et [ERROR]
niveau à afficher dans les logs de mon serveur.
cependant, je ne les considère pas comme des erreurs réelles, donc je ne veux pas les voir. Surtout que c'est il est inévitable que cela arrive souvent une fois que le service sera utilisé par le public.
Voici la sortie de journal que je veux supprimer:
12:50:38,938 SEVERE [org.jboss.resteasy.core.SynchronousDispatcher] (http-localhost/127.0.0.1:8080-2) Failed executing GET /ajax/findPerson: org.jboss.resteasy.spi.WriterException: ClientAbortException: java.net.SocketException: Broken pipe
at org.jboss.resteasy.core.ServerResponse.writeTo(ServerResponse.java:262) [resteasy-jaxrs-2.3.6.Final-redhat-1.jar:2.3.6.Final-redhat-1]
....
Caused by: ClientAbortException: java.net.SocketException: Broken pipe
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:403) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:356) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:426) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:415) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
...
Caused by: java.net.SocketException: Broken pipe
at java.net.SocketOutputStream.socketWrite0(Native Method) [rt.jar:1.7.0_51]
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:113) [rt.jar:1.7.0_51]
at java.net.SocketOutputStream.write(SocketOutputStream.java:159) [rt.jar:1.7.0_51]
at org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:711) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:450) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:351) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
...
12:50:38,942 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/myapplication].[MyAjaxApplication]] (http-localhost/127.0.0.1:8080-2) JBWEB000236: Servlet.service() for servlet MyAjaxApplication threw exception: java.lang.IllegalStateException
at org.apache.catalina.connector.ResponseFacade.sendError(ResponseFacade.java:392) [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
at javax.servlet.http.HttpServletResponseWrapper.sendError(HttpServletResponseWrapper.java:152) [jboss-servlet-api_3.0_spec-1.0.2.Final-redhat-1.jar:1.0.2.Final-redhat-1]
...
y a-t-il une façon élégante de faire cela?
Par écrire ma propreExceptionMapper
j'ai réussi à éviter le premier (le [SEVERE]
) et le transformer en une sortie de journal d'une ligne de niveau de débogage, mais la seconde est toujours là. Franchement, je n'ai aucune idée où commencer à chercher.
j'ai vu dans une autre question que je pourrais juste mettre le niveau de journalisation de l'une ou des deux classes de jeter les erreurs à un niveau supérieur, dire [FATAL]
, mais je considérerais cela comme une solution...
des Idées?
1 réponses
dans le JBoss standalone.fichier de configuration xml, aller dans le sous-système de journalisation (E. g en cherchant
<subsystem xmlns="urn:jboss:domain:logging:1.5">
si vous utilisez EAP 6.4.0), et ensuite ajouter un logger pour la catégorie pour laquelle vous voulez supprimer les erreurs. Pour votre exemple si vous voulez supprimer les logs pour org.jboss.resteasy alors votre enregistreur ressemblerait
<logger category="org.jboss.resteasy">
<level name="OFF"/>
</logger>
le réglage du niveau à OFF devrait supprimer le logger de la journalisation des erreurs dans le paquet org.jboss.resteasy