camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Claus Ibsen <claus.ib...@gmail.com>
Subject Re: Validate Xml
Date Thu, 01 Aug 2013 06:27:14 GMT
Hi

I think there is 2 other CXF options you can use to turn of exception
message and/or stacktraces in the response message. They are turned
off by default to not shown internal error messages etc by default to
clients.

There is this link that points you to the docs
http://camel.apache.org/how-can-webservice-clients-see-remote-faults-with-stacktraces-when-using-camel-cxf.html

On Wed, Jul 31, 2013 at 5:56 PM, bocamel <johnzyin@gmail.com> wrote:
> Thanks Claus!
>
> Using what you suggested, CXF threw an error with much better information
> about the actual error with the input XML PAYLOAD message.  But there is a
> little problem - the response sent back to the client is a simple HTTP 500
> message without any explanation.  In fact, in this case HTTP 500 is rather
> misleading - leading the client to think that the issue is a server issue
> when it is actually a client issue.  A HTTP 400 would be more appropriate in
> my opinion.
>
> So I tried to catch the exception before it is sent back to the client.  But
> none of the onException in Camel route would be able to catch it - I guess
> the exception was caught by CXF already.  Any suggestion on how to catch the
> error in Camel route so that I can control what is sent back to the client?
>
> Here is what I saw on the console:
>
> [              qtp1563200034-16] PhaseInterceptorChain          WARN
> Interceptor for
> {http://myService}myService#{http://cxf.component.camel.apache.org/}invoke
> has thrown exception, unwinding now
> org.apache.cxf.interceptor.Fault: Could not parse the XML stream caused by:
> com.ctc.wstx.exc.WstxParsingException: Unexpected close tag </soapenv:Body>;
> expected </com:test>.
>  at [row,col {unknown-source}]: [8,17].
>         at
> org.apache.cxf.databinding.source.XMLStreamDataReader.read(XMLStreamDataReader.java:253)
>         at
> org.apache.cxf.databinding.source.XMLStreamDataReader.validate(XMLStreamDataReader.java:211)
>         at
> org.apache.cxf.databinding.source.XMLStreamDataReader.read(XMLStreamDataReader.java:107)
>         at
> org.apache.cxf.databinding.source.XMLStreamDataReader.read(XMLStreamDataReader.java:75)
>         at
> org.apache.cxf.databinding.source.XMLStreamDataReader.read(XMLStreamDataReader.java:60)
>         at
> org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:189)
>         at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271)
>         at
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
>         at
> org.apache.cxf.transport.http_jetty.JettyHTTPDestination.serviceRequest(JettyHTTPDestination.java:355)
>         at
> org.apache.cxf.transport.http_jetty.JettyHTTPDestination.doService(JettyHTTPDestination.java:319)
>         at
> org.apache.cxf.transport.http_jetty.JettyHTTPHandler.handle(JettyHTTPHandler.java:72)
>         at
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1074)
>         at
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1010)
>         at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
>         at
> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
>         at
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
>         at org.eclipse.jetty.server.Server.handle(Server.java:365)
>         at
> org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:485)
>         at
> org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:937)
>         at
> org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:998)
>         at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:856)
>         at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
>         at
> org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
>         at
> org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:627)
>         at
> org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:51)
>         at
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
>         at
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
>         at java.lang.Thread.run(Thread.java:722)
> Caused by: com.ctc.wstx.exc.WstxParsingException: Unexpected close tag
> </soapenv:Body>; expected </com:test>.
>  at [row,col {unknown-source}]: [8,17]
>         at
> com.ctc.wstx.sr.StreamScanner.constructWfcException(StreamScanner.java:606)
>         at com.ctc.wstx.sr.StreamScanner.throwParseError(StreamScanner.java:479)
>         at com.ctc.wstx.sr.StreamScanner.throwParseError(StreamScanner.java:464)
>         at
> com.ctc.wstx.sr.BasicStreamReader.reportWrongEndPrefix(BasicStreamReader.java:3266)
>         at
> com.ctc.wstx.sr.BasicStreamReader.readEndElem(BasicStreamReader.java:3183)
>         at
> com.ctc.wstx.sr.BasicStreamReader.nextFromTree(BasicStreamReader.java:2829)
>         at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1072)
>         at
> org.apache.cxf.staxutils.DepthXMLStreamReader.next(DepthXMLStreamReader.java:220)
>         at org.apache.cxf.staxutils.StaxUtils.readDocElements(StaxUtils.java:1248)
>         at org.apache.cxf.staxutils.StaxUtils.readDocElements(StaxUtils.java:1142)
>         at org.apache.cxf.staxutils.StaxUtils.read(StaxUtils.java:1069)
>         at org.apache.cxf.staxutils.StaxUtils.read(StaxUtils.java:1058)
>         at
> org.apache.cxf.databinding.source.XMLStreamDataReader.read(XMLStreamDataReader.java:245)
>         ... 27 more
> [              qtp1563200034-16] AbstractHttpConnection         WARN
> /myService/
> java.lang.NoSuchMethodError:
> javax.servlet.http.HttpServletRequest.getLocalAddr()Ljava/lang/String;
>         at
> org.apache.cxf.transport.http.HttpServletRequestSnapshot.<init>(HttpServletRequestSnapshot.java:80)
>         at
> org.apache.cxf.transport.http.AbstractHTTPDestination$1.cacheInput(AbstractHTTPDestination.java:276)
>         at
> org.apache.cxf.transport.http.AbstractHTTPDestination.cacheInput(AbstractHTTPDestination.java:527)
>         at
> org.apache.cxf.transport.http.AbstractHTTPDestination.flushHeaders(AbstractHTTPDestination.java:539)
>         at
> org.apache.cxf.transport.http_jetty.JettyHTTPDestination.flushHeaders(JettyHTTPDestination.java:380)
>         at
> org.apache.cxf.transport.http.AbstractHTTPDestination.flushHeaders(AbstractHTTPDestination.java:532)
>         at
> org.apache.cxf.transport.http.AbstractHTTPDestination$WrappedOutputStream.onFirstWrite(AbstractHTTPDestination.java:709)
>         at
> org.apache.cxf.io.AbstractWrappedOutputStream.write(AbstractWrappedOutputStream.java:47)
>         at com.ctc.wstx.io.UTF8Writer.flush(UTF8Writer.java:100)
>         at com.ctc.wstx.sw.BufferingXmlWriter.flush(BufferingXmlWriter.java:225)
>         at com.ctc.wstx.sw.BufferingXmlWriter.close(BufferingXmlWriter.java:198)
>         at
> com.ctc.wstx.sw.BaseStreamWriter._finishDocument(BaseStreamWriter.java:1404)
>         at
> com.ctc.wstx.sw.BaseStreamWriter.writeEndDocument(BaseStreamWriter.java:536)
>         at
> org.apache.cxf.binding.soap.interceptor.SoapOutInterceptor$SoapOutEndingInterceptor.handleMessage(SoapOutInterceptor.java:283)
>         at
> org.apache.cxf.binding.soap.interceptor.SoapOutInterceptor$SoapOutEndingInterceptor.handleMessage(SoapOutInterceptor.java:271)
>         at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271)
>         at
> org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:114)
>         at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:331)
>         at
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
>         at
> org.apache.cxf.transport.http_jetty.JettyHTTPDestination.serviceRequest(JettyHTTPDestination.java:355)
>         at
> org.apache.cxf.transport.http_jetty.JettyHTTPDestination.doService(JettyHTTPDestination.java:319)
>         at
> org.apache.cxf.transport.http_jetty.JettyHTTPHandler.handle(JettyHTTPHandler.java:72)
>         at
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1074)
>         at
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1010)
>         at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
>         at
> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
>         at
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
>         at org.eclipse.jetty.server.Server.handle(Server.java:365)
>         at
> org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:485)
>         at
> org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:937)
>         at
> org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:998)
>         at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:856)
>         at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
>         at
> org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
>         at
> org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:627)
>         at
> org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:51)
>         at
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
>         at
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
>         at java.lang.Thread.run(Thread.java:722)
>
>
>
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/Validate-Xml-tp472122p5736587.html
> Sent from the Camel - Users mailing list archive at Nabble.com.



-- 
Claus Ibsen
-----------------
Red Hat, Inc.
Email: cibsen@redhat.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen

Mime
View raw message