2010-05-18 15 views
0

Je travaille sur un service Web basé sur SOAP, avec Sun's Metro.Rediriger les journaux de sortie de javax.xml.ws et com.sun.xml.ws

Je suis face à un bug gênant, chaque fois que j'envoyer un objet SOAP malformé à mon service Web, le spam api de soleil le System.out avec des bûches comme ceci:

javax.xml.ws.WebServiceException: com.sun.istack.XMLStreamException2: org.xml.sax.SAXParseException: cvc-complex-type.4: L'attribut 'type' doit apparaître sur l'élément 'objet'. à com.sun.xml.ws.util.pipe.AbstractSchemaValidationTube.doProcess (AbstractSchemaValidationTube.java:206) à com.sun.xml.ws.util.pipe.AbstractSchemaValidationTube.processRequest (AbstractSchemaValidationTube.java:175) à com.sun.xml.ws.api.pipe.Fiber .__ doRun (Fibre.java:595) à com.sun.xml.ws.api.pipe.Fiber._doRun (Fibre.java:554) à com. sun.xml.ws.api.pipe.Fiber.doRun (Fiber.java:539) à com.sun.xml.ws.api.pipe.Fiber.runSync (Fiber.java:436) à com.sun. xml.ws.server.WSEndpointImpl $ 2.process (WSEndpointImpl.java:243) à com.sun.xml.ws.transport.http.HttpAdapter $ HttpToolkit.handle (HttpAdapter.java:444) à com.sun.xml .ws.transport.http.HttpAdapter.handle (HttpAdapter.java:244) à l'adresse com.sun.xml.ws.transport.http.server.WSHttpHandler.handleExchange (WSHttpHandler.java:106) à l'adresse com.sun.xml.ws.transport.http.server.WSHttpHandler.handle (WSHttpHandler.java: 91) à com.sun.net.httpserver.Filter $ Chain.doFilter (Filter.java:65) à sun.net.httpserver.AuthFilter.doFilter (AuthFilter.java:54) à com.sun.net. httpserver.Filter $ Chain.doFilter (Filter.java:68) sur sun.net.httpserver.ServerImpl $ Échangez $ LinkHandler.handle (ServerImpl.java:555) sur com.sun.net.httpserver.Filter $ Chaîne. doFilter (Filter.java:65) à sun.net.httpserver.ServerImpl $ Exchange.run (ServerImpl.java:527) à sun.net.httpserver.ServerImpl $ DefaultExecutor.execute (ServerImpl.java:119) à sun.net.httpserver.ServerImpl $ Dispa tcher.handle (ServerImpl.java:349) à sun.net.httpserver.ServerImpl $ Dispatcher.run (ServerImpl.java:321) à java.lang.Thread.run (Thread.java:619) Causé par: com.sun.istack.XMLStreamException2: org.xml.sax.SAXParseException: cvc-complex-type.4: L'attribut 'type' doit apparaître sur l'élément 'objet'. à com.sun.xml.ws.util.xml.StAXSource $ 1.parse (StAXSource.java:185) à com.sun.xml.ws.util.xml.StAXSource $ 1.parse (StAXSource.java:170) à org.apache.xerces.jaxp.validation.ValidatorHandlerImpl.validate (source inconnue) à org.apache.xerces.jaxp.validation.ValidatorImpl.validate (source inconnue) à javax.xml.validation.Validator.validate (Validator.java:127) à com.sun.xml.ws.util.pipe.AbstractSchemaValidationTube.doProcess (AbstractSchemaValidationTube.java:204) ... 20 plus

Je voudrais désactiver ce journal ou le rediriger vers mon error/warn/debug.log fichiers utilisés par log4j.

J'ai essayé d'ajouter une règle dans mon log4j.xml fichier:

<category name="javax.xml.ws"> 
<priority value="error" /> 
</category> 

Il n'a pas travaillé.

J'ai donc essayé l'astuce suivante:

java.util.logging.Logger.getLogger("javax.xml.ws.WebServiceException").setLevel(
      java.util.logging.Level.OFF); 

il n'a pas travaillé ni.

Des idées?

Il est pas un gros problème, mais il me fait catalina.log grossit & plus gros et ce n'est pas l'endroit approprié pour ce genre de journal.

Chris

+0

J'étudie la source Metro pour un problème similaire. Il semble que la sortie vers System.out est codée en dur et ne peut pas être facilement modifiée. –

Répondre

0

solution pire scénario:

System.setOut(new PrintStream(new FileOutputStream("debug.log"))); 
+0

Merci Chris Dans mon cas, je devrais utiliser System.setErr au lieu de System.setOut Si je ne trouve pas une meilleure solution, je vais pour celui-ci – chrisnfoneur