Okay I've looked at a way to implement this. However I was wondering if I can use XPath to get my xml attribtues from the soap message to rebuild the message to be soap 1.1 compliant ?
--- Guillaume Nodet <[EMAIL PROTECTED]> wrote: > I think that the call to > exchange.setStatus(ExchangeStatus.ERROR) is a bug. > This is not compliant with the JBI spec (a fault > should use an ACTIVE status). > So that should be fixed. > Next, I think you can not parse the result fault, > because it is a Soap > 1.2 fault (soap 1.1 faults are not yet handled), see > org.apache.servicemix.soap.marshalers.SoapWriter#writeSoap11Fault(XMLStreamWriter). > > However, I' m not sure what to about the nested soap > fault ... > > Please, raise a JIRA for this problem. > And attach a patch for the soap 1.1 fault writer if > you want ... > > Cheers, > Guillaume Nodet > > On 5/4/06, Eric Dofonsou <[EMAIL PROTECTED]> > wrote: > > > > > > Okay here is what I have : > > > > Generated Stub -> HTTP Consumer-> HTTP Provider -> > > JBoss Web Service. > > > > So when the generated stubs received the HTTP > based > > error message from the servicemix HTTPConsumer > they > > cannot parse the message and thus do not handlt eh > > buisness like they are supposed to be handle. > > > > The HTTP Consumer produces this error because it > > receives a fault message from the HTTP provider > > endpoint. I do not think that the Consumer should > be > > modified for this. I think the consumer is doing > the > > right think in raising an HTTP 500 error, > However, I > > think that the Provider should have an attribut > that > > says do not process error messages (ignoreErrors > ?). > > This way the message will be transfered as is to > the > > consumer who will return this to the client (a > stub in > > my case). The stub can hand the soap message > without > > any problem. > > > > Ps: I've noticed that if I remove the > > "exchange.setStatus(ExchangeStatus.ERROR);" I get > the > > following message from teh server (which still > cannot > > be handle by my stub). WHat I really want is the > > soapenv section. > > > > ---- > > > > <env:Envelope > > > xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> > > <env:Body> > > <env:Fault> > > <env:Code> > > <env:Value>env:Receiver</env:Value> > > </env:Code> > > <env:Details> > > <soapenv:Fault > > xmlns:ns1="http://ws.location.services.com/" > > > xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" > > xmlns:xsd="http://www.w3.org/2001/XMLSchema"> > > > <faultcode>soapenv:Server</faultcode> > > > > > <faultstring>java.lang.IllegalArgumentException</faultstring> > > </soapenv:Fault> > > </env:Details> > > </env:Fault> > > </env:Body> > > </env:Envelope> > > > > > > > > > > --- Guillaume Nodet <[EMAIL PROTECTED]> wrote: > > > > > The error you see is created by a consumer > endpoint > > > (not a provider > > > endpoint) when an error is returned by the > target > > > endpoint. > > > Is this a business exception ? in this case, the > > > target endpoint > > > should return a fault, not an error. > > > Could you please explain the whole flow you use > ? > > > I'd like to improve that, but i need a > reproducible > > > test / xml configuration ... > > > > > > Cheers, > > > Guillaume Nodet > > > > > > On 5/4/06, Eric Dofonsou <[EMAIL PROTECTED]> > > > wrote: > > > > Hello, > > > > > > > > I am having another issue with the way > servicemix > > > > handles all the soap fault message return by > my > > > web > > > > services, > > > > > > > > With the current version of servicemix, my > soap > > > > message is replace by the following HTTP error > > > message > > > > : > > > > ------ > > > > <html> > > > > <head> > > > > <title>Error 500 Unknown Error</title> > > > > </head> > > > > <body> > > > > <h2>HTTP ERROR: 500</h2> > > > > <pre>Unknown Error</pre> > > > > <p>RequestURI=/Service/</p> > > > > <p> > > > > <i> > > > > <small> > > > > <a > > > > href="http://jetty.mortbay.org">Powered by > > > > Jetty://</a> > > > > </small> > > > > </i> > > > > </p> > > > > </body> > > > > </html> > > > > ---- > > > > > > > > because of this message, my generated stubs > cannot > > > > properly handle the soap message. > > > > > > > > I was wondering if it's not possible to have > an > > > > attribut that specifies on a provider endpoint > > > that we > > > > do not want servicemix to error message from > the > > > web > > > > service and just return them as is to the > client. > > > > > > > > PS : when I put the block of code that handls > the > > > > error message in comment it works fine : > > > > Here is the black of code from > ProviderProcessor > > > that > > > > is commented out : > > > > ------------ > > > > if (response != HttpStatus.SC_OK) > { > > > > if (exchange instanceof InOnly > == > > > > false) { > > > > Fault fault = > > > > exchange.createFault(); > > > > SoapReader reader = > > > > soapMarshaler.createReader(); > > > > Header contentType = > > > > method.getResponseHeader("Content-Type"); > > > > soapMessage = > > > > reader.read(method.getResponseBodyAsStream(), > > > > > > > > contentType != null ? contentType.getValue() : > > > null); > > > > > > > > > fault.setProperty(JbiConstants.PROTOCOL_HEADERS, > > > > getHeaders(method)); > > > > jbiMarshaler.toNMS(fault, > > > > soapMessage); > > > > exchange.setFault(fault); > > > > > > > > exchange.setStatus(ExchangeStatus.ERROR); > > > > channel.send(exchange); > > > > return; > === message truncated === __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
