You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by ebret <er...@edf.fr> on 2010/09/23 10:05:40 UTC

Weird SAXException - AxisFault stacktrace

Hi,

In my project we use a custom AxisLogHandler (extends BasicHandler) that
logs request and response.

Sometime a WebService call from a client throws a exception (No deserializer
). This exception is catched by a RemoteException catch clause on the
client.  I think the exception is thrown by the loghandler.

BUT 
I dont understand why the AxisFault (that is a IOException) is not catch by
the catch(IOException) clause of my LogHandler



Here the stacktrace
20100922-13:52:55 3 ITRDIA pcyy7aql
com.edf.sis.services.facade.ServiceFacadeCMDE.getConseilsMDE(ServiceFacadeCMDE.java:240)
1.5.20 Impossible d'appeler le Conseil MDE :  
AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
 faultSubcode: 
 faultString: org.xml.sax.SAXException: No deserializer for
{types.client_mde}Information_client
 faultActor: 
 faultNode: 
 faultDetail: 
	{http://xml.apache.org/axis/}hostname:pcyy7aql

org.xml.sax.SAXException: No deserializer for
{types.client_mde}Information_client
	at
org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
	at
org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
	at
org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
	at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:633)
	at
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanEndElement(XMLNSDocumentScannerImpl.java:719)
	at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1685)
	at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
	at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
	at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
	at
com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
	at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
	at weblogic.xml.jaxp.WebLogicXMLReader.parse(WebLogicXMLReader.java:133)
	at weblogic.xml.jaxp.RegistryXMLReader.parse(RegistryXMLReader.java:153)
	at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
	at
org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
	at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
	at org.apache.axis.SOAPPart.getEnvelope(SOAPPart.java:1003)
	at org.apache.axis.Message.getSOAPBody(Message.java:555)
	at com.edf.sis.facade.handlers.AxisLogHandler.log(AxisLogHandler.java:63)
	at
com.edf.sis.facade.handlers.AxisLogHandler.invoke(AxisLogHandler.java:42)
	at
org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
	at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
	at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
	at org.apache.axis.client.AxisClient.invoke(AxisClient.java:190)
	at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
	at org.apache.axis.client.Call.invoke(Call.java:2767)
	at org.apache.axis.client.Call.invoke(Call.java:2443)
	at org.apache.axis.client.Call.invoke(Call.java:2366)
	at org.apache.axis.client.Call.invoke(Call.java:1812)
	at
com.edf.sis.webservices.cmde.Ws_client_mdeSoapBindingStub.getConseilsMDE(Ws_client_mdeSoapBindingStub.java:477)
	at
com.edf.sis.facade.control.ClientMDEServiceControl.getConseilsMDE(ClientMDEServiceControl.java:104)
	at
com.edf.sis.services.facade.ServiceFacadeCMDE.getConseilsMDE(ServiceFacadeCMDE.java:237)
	at
com.edf.sis.ws.facade.cmde.impl.WebserviceFacadeCMDEImpl.getConseils(WebserviceFacadeCMDEImpl.java:325)
	at sun.reflect.GeneratedMethodAccessor424.invoke(Unknown Source)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at weblogic.wsee.jaxws.WLSInvoker.invoke(WLSInvoker.java:50)
	at weblogic.wsee.jaxws.WLSInvoker.invoke(WLSInvoker.java:42)
	at
com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(EndpointMethodHandler.java:247)
	at com.sun.xml.ws.server.sei.SEIInvokerPipe.process(SEIInvokerPipe.java:97)
	at weblogic.wsee.jaxws.MonitoringPipe.process(MonitoringPipe.java:98)
	at com.sun.xml.ws.protocol.soap.ServerMUPipe.process(ServerMUPipe.java:62)
	at com.sun.xml.ws.server.WSEndpointImpl$1.process(WSEndpointImpl.java:139)
	at
com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:153)
	at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:235)
	at
com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:97)
	at weblogic.wsee.jaxws.HttpServletAdapter.post(HttpServletAdapter.java:36)
	at weblogic.wsee.jaxws.JAXWSServlet.doPost(JAXWSServlet.java:218)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
	at
weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:226)
	at
weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:124)
	at
weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
	at
weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175)
	at
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(Unknown
Source)
	at
weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
	at weblogic.security.service.SecurityManager.runAs(Unknown Source)
	at weblogic.servlet.internal.WebAppServletContext.securedExecute(Unknown
Source)
	at weblogic.servlet.internal.WebAppServletContext.execute(Unknown Source)
	at
weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1366)
	at weblogic.work.ExecuteThread.execute(ExecuteThread.java:200)
	at weblogic.work.ExecuteThread.run(ExecuteThread.java:172)



The catch clause:
try {
// Appel de getConseilsMDE
   vRetour = facadeCMDE.getConseilsMDE(pNbConseils, vInfoClientTab,
pDateLivraison, pConseils);
} catch (RemoteException eRemoteException) {
  // Si le conseiller MDE ne répond pas, on log le flux en KO et on rethrow
l'exception
  mLogger.error("Impossible d'appeler le Conseil MDE : " ,
eRemoteException);
  mServiceTracabilite.saveFlux(new
FluxDTO(Constantes.CD_FLUX_WS_CMDE_GET_CONSEIL,
			                                         0, new Date(), Constantes.KO, 1,
			                                         "Impossible d'appeler le Conseil
MDE."));
  throw eRemoteException;
}

Here the code of the AxisLogHandler
 public void invoke(MessageContext pMessageContext) throws AxisFault {
        this.log(pMessageContext);
    }
    
    /**
     * Gestion des logs.
     * 
     * @param pMessageContext
     *            Message entrant ou sortant
     */
    private void log(MessageContext pMessageContext) {
        boolean vSens =
!Message.RESPONSE.equals(pMessageContext.getCurrentMessage().getMessageType());
        StringBuilder vStringBuffer = null;
        ByteArrayOutputStream vBaos = null;
        try {
            vBaos = new ByteArrayOutputStream();
            pMessageContext.getMessage().writeTo(vBaos);
            // Formatage du message XML
            vStringBuffer = new StringBuilder(vBaos.toString().length());
           
vStringBuffer.append(XMLUtils.getInstance().format(vBaos.toString().trim()));
            
            // Récupération du namespace
            SOAPBody vBody = pMessageContext.getMessage().getSOAPBody(); 
//<= Here we get EXCEPTION
            String vNameSpace = vBody.getFirstChild().getNamespaceURI();
            
            // Déduction du logger
            String vCategory = vNameSpace;
            vCategory =
vCategory.replace("urn:uSimFastServiceIntf-ISimFastService",
"com.edf.axis.CDC");
            vCategory =
vCategory.replace("http://services.conseils_mde.edf_retd.com",
"com.edf.axis.CMDE");
            Logger vLogger = LoggerFactory.getLogger(vCategory);
            // Log du message XML formaté
            if (vLogger.isInfoEnabled()) {
                vLogger.info(getLogMessage(vSens, vStringBuffer, null));
            }
            
        } catch (SOAPException pSOAPException) {
            LOGGER.error("Soap LogHandler : Echec de lecture du message !",
pSOAPException);
            LOGGER_ERROR.info(getLogMessage(vSens, vStringBuffer, "Echec de
lecture du message "));
            
        } catch (IOException pIOException) {
            LOGGER.error("Soap LogHandler : Echec de lecture du message !",
pIOException);
            LOGGER_ERROR.info(getLogMessage(vSens, vStringBuffer, "Echec de
lecture du message "));
        } finally {
            if (vBaos != null) {
                try {
                    vBaos.close();
                } catch (IOException pIOException) {
                    LOGGER.error("Soap LogHandler : Echec lors de la
fermeture du ByteArrayOutputStream", pIOException);
                }
            }
        }
    }

Thanks for you help...
-- 
View this message in context: http://old.nabble.com/Weird-SAXException---AxisFault-stacktrace-tp29786925p29786925.html
Sent from the Axis - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@axis.apache.org
For additional commands, e-mail: java-user-help@axis.apache.org


Re: Weird SAXException - AxisFault stacktrace

Posted by Andreas Veithen <an...@gmail.com>.
As part of the promotion of the Axis project to a top level project,
we have decided to create separate mailing lists for Axis 1 and Axis2.
For all Axis 1 related questions please subscribe and post to
axis1-java-user@axis.apache.org. Thanks!

Andreas


On Thu, Sep 23, 2010 at 10:05, ebret <er...@edf.fr> wrote:
>
> Hi,
>
> In my project we use a custom AxisLogHandler (extends BasicHandler) that
> logs request and response.
>
> Sometime a WebService call from a client throws a exception (No deserializer
> ). This exception is catched by a RemoteException catch clause on the
> client.  I think the exception is thrown by the loghandler.
>
> BUT
> I dont understand why the AxisFault (that is a IOException) is not catch by
> the catch(IOException) clause of my LogHandler
>
>
>
> Here the stacktrace
> 20100922-13:52:55 3 ITRDIA pcyy7aql
> com.edf.sis.services.facade.ServiceFacadeCMDE.getConseilsMDE(ServiceFacadeCMDE.java:240)
> 1.5.20 Impossible d'appeler le Conseil MDE :
> AxisFault
>  faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
>  faultSubcode:
>  faultString: org.xml.sax.SAXException: No deserializer for
> {types.client_mde}Information_client
>  faultActor:
>  faultNode:
>  faultDetail:
>        {http://xml.apache.org/axis/}hostname:pcyy7aql
>
> org.xml.sax.SAXException: No deserializer for
> {types.client_mde}Information_client
>        at
> org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
>        at
> org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
>        at
> org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
>        at
> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:633)
>        at
> com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanEndElement(XMLNSDocumentScannerImpl.java:719)
>        at
> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1685)
>        at
> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
>        at
> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
>        at
> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
>        at
> com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
>        at
> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
>        at weblogic.xml.jaxp.WebLogicXMLReader.parse(WebLogicXMLReader.java:133)
>        at weblogic.xml.jaxp.RegistryXMLReader.parse(RegistryXMLReader.java:153)
>        at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
>        at
> org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
>        at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
>        at org.apache.axis.SOAPPart.getEnvelope(SOAPPart.java:1003)
>        at org.apache.axis.Message.getSOAPBody(Message.java:555)
>        at com.edf.sis.facade.handlers.AxisLogHandler.log(AxisLogHandler.java:63)
>        at
> com.edf.sis.facade.handlers.AxisLogHandler.invoke(AxisLogHandler.java:42)
>        at
> org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
>        at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
>        at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
>        at org.apache.axis.client.AxisClient.invoke(AxisClient.java:190)
>        at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
>        at org.apache.axis.client.Call.invoke(Call.java:2767)
>        at org.apache.axis.client.Call.invoke(Call.java:2443)
>        at org.apache.axis.client.Call.invoke(Call.java:2366)
>        at org.apache.axis.client.Call.invoke(Call.java:1812)
>        at
> com.edf.sis.webservices.cmde.Ws_client_mdeSoapBindingStub.getConseilsMDE(Ws_client_mdeSoapBindingStub.java:477)
>        at
> com.edf.sis.facade.control.ClientMDEServiceControl.getConseilsMDE(ClientMDEServiceControl.java:104)
>        at
> com.edf.sis.services.facade.ServiceFacadeCMDE.getConseilsMDE(ServiceFacadeCMDE.java:237)
>        at
> com.edf.sis.ws.facade.cmde.impl.WebserviceFacadeCMDEImpl.getConseils(WebserviceFacadeCMDEImpl.java:325)
>        at sun.reflect.GeneratedMethodAccessor424.invoke(Unknown Source)
>        at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:585)
>        at weblogic.wsee.jaxws.WLSInvoker.invoke(WLSInvoker.java:50)
>        at weblogic.wsee.jaxws.WLSInvoker.invoke(WLSInvoker.java:42)
>        at
> com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(EndpointMethodHandler.java:247)
>        at com.sun.xml.ws.server.sei.SEIInvokerPipe.process(SEIInvokerPipe.java:97)
>        at weblogic.wsee.jaxws.MonitoringPipe.process(MonitoringPipe.java:98)
>        at com.sun.xml.ws.protocol.soap.ServerMUPipe.process(ServerMUPipe.java:62)
>        at com.sun.xml.ws.server.WSEndpointImpl$1.process(WSEndpointImpl.java:139)
>        at
> com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:153)
>        at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:235)
>        at
> com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:97)
>        at weblogic.wsee.jaxws.HttpServletAdapter.post(HttpServletAdapter.java:36)
>        at weblogic.wsee.jaxws.JAXWSServlet.doPost(JAXWSServlet.java:218)
>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
>        at
> weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:226)
>        at
> weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:124)
>        at
> weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
>        at
> weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175)
>        at
> weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(Unknown
> Source)
>        at
> weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
>        at weblogic.security.service.SecurityManager.runAs(Unknown Source)
>        at weblogic.servlet.internal.WebAppServletContext.securedExecute(Unknown
> Source)
>        at weblogic.servlet.internal.WebAppServletContext.execute(Unknown Source)
>        at
> weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1366)
>        at weblogic.work.ExecuteThread.execute(ExecuteThread.java:200)
>        at weblogic.work.ExecuteThread.run(ExecuteThread.java:172)
>
>
>
> The catch clause:
> try {
> // Appel de getConseilsMDE
>   vRetour = facadeCMDE.getConseilsMDE(pNbConseils, vInfoClientTab,
> pDateLivraison, pConseils);
> } catch (RemoteException eRemoteException) {
>  // Si le conseiller MDE ne répond pas, on log le flux en KO et on rethrow
> l'exception
>  mLogger.error("Impossible d'appeler le Conseil MDE : " ,
> eRemoteException);
>  mServiceTracabilite.saveFlux(new
> FluxDTO(Constantes.CD_FLUX_WS_CMDE_GET_CONSEIL,
>                                                                 0, new Date(), Constantes.KO, 1,
>                                                                 "Impossible d'appeler le Conseil
> MDE."));
>  throw eRemoteException;
> }
>
> Here the code of the AxisLogHandler
>  public void invoke(MessageContext pMessageContext) throws AxisFault {
>        this.log(pMessageContext);
>    }
>
>    /**
>     * Gestion des logs.
>     *
>     * @param pMessageContext
>     *            Message entrant ou sortant
>     */
>    private void log(MessageContext pMessageContext) {
>        boolean vSens =
> !Message.RESPONSE.equals(pMessageContext.getCurrentMessage().getMessageType());
>        StringBuilder vStringBuffer = null;
>        ByteArrayOutputStream vBaos = null;
>        try {
>            vBaos = new ByteArrayOutputStream();
>            pMessageContext.getMessage().writeTo(vBaos);
>            // Formatage du message XML
>            vStringBuffer = new StringBuilder(vBaos.toString().length());
>
> vStringBuffer.append(XMLUtils.getInstance().format(vBaos.toString().trim()));
>
>            // Récupération du namespace
>            SOAPBody vBody = pMessageContext.getMessage().getSOAPBody();
> //<= Here we get EXCEPTION
>            String vNameSpace = vBody.getFirstChild().getNamespaceURI();
>
>            // Déduction du logger
>            String vCategory = vNameSpace;
>            vCategory =
> vCategory.replace("urn:uSimFastServiceIntf-ISimFastService",
> "com.edf.axis.CDC");
>            vCategory =
> vCategory.replace("http://services.conseils_mde.edf_retd.com",
> "com.edf.axis.CMDE");
>            Logger vLogger = LoggerFactory.getLogger(vCategory);
>            // Log du message XML formaté
>            if (vLogger.isInfoEnabled()) {
>                vLogger.info(getLogMessage(vSens, vStringBuffer, null));
>            }
>
>        } catch (SOAPException pSOAPException) {
>            LOGGER.error("Soap LogHandler : Echec de lecture du message !",
> pSOAPException);
>            LOGGER_ERROR.info(getLogMessage(vSens, vStringBuffer, "Echec de
> lecture du message "));
>
>        } catch (IOException pIOException) {
>            LOGGER.error("Soap LogHandler : Echec de lecture du message !",
> pIOException);
>            LOGGER_ERROR.info(getLogMessage(vSens, vStringBuffer, "Echec de
> lecture du message "));
>        } finally {
>            if (vBaos != null) {
>                try {
>                    vBaos.close();
>                } catch (IOException pIOException) {
>                    LOGGER.error("Soap LogHandler : Echec lors de la
> fermeture du ByteArrayOutputStream", pIOException);
>                }
>            }
>        }
>    }
>
> Thanks for you help...
> --
> View this message in context: http://old.nabble.com/Weird-SAXException---AxisFault-stacktrace-tp29786925p29786925.html
> Sent from the Axis - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-user-unsubscribe@axis.apache.org
> For additional commands, e-mail: java-user-help@axis.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@axis.apache.org
For additional commands, e-mail: java-user-help@axis.apache.org