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?

14
demandé sur Community 2014-05-13 12:08:41

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

1
répondu lazyPanda 2017-01-13 01:56:28