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;
> >                 } else {
> >                     throw new Exception("Invalid
> > status response: " + response);
> >                 }
> >             }
> > ------------
> >
> > __________________________________________________
> > Do You Yahoo!?
> > Tired of spam?  Yahoo! Mail has the best spam
> protection around
> > http://mail.yahoo.com
> >
> 


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

Reply via email to