Correction in "pingF & fireAndForget" case. Client side expection must
have been N/A. My apologies...

-----------------------------------------------------------------
Hi,

I've discovered ServiceClient's sendRobust() method and
RobustOutOnlyAxisOperation which is implicitly an Out-In operation.
Therefore, it sends the SOAP message and receives a response. Then, it
checks for a fault and throws an AxisFault if the incoming message is
actually a SOAPFault.

This behavior is what I've been looking for in last two-three weeks :)

So, I gave ping and pingF services a try. You may see the results
below. But, it doesn't seem to meet my needs. What I need are:

- If the service returns HTTP 500, I want it to behave as in "pingF &
sendRobust" case. But, with the actual exception message thrown by the
service.

- If the service returns HTTP 202, I want it to behave as in "ping &
fireAndForget" case. 

Should I directly use createClient() method of ServiceClient? Or, do my
expectations weird? :) If I'm required to use createClient(), should I
manually change all the generated stub code? Or, is there a better way
for the human being :)

Thanks a lot.

Ali Sadik Kumlali

---------------------------------------------------------------------------
Server responses for ping and pingF service calls
---------------------------------------------------------------------------
ping & fireAndForget
 - HTTP status          : HTTP/1.1 202 Accepted
 - Incoming message     : N/A
 - Client side exception: N/A
 - Server side exception: N/A


ping & sendRobust
 - HTTP status          : HTTP/1.1 202 Accepted
 - Incoming message     : N/A
 - Client side exception: "Incoming message input stream is null"
 - Server side exception: N/A


pingF & fireAndForget
 - HTTP status          : HTTP/1.1 500 Internal Server Error
 - Incoming message     : SOAPFault whose faultstring is "unknown". 
                          However, the error message thrown by pingF 
                          is "Fault being thrown"
 - Client side exception: N/A
 - Server side exception: N/A


pingF & sendRobust
 - HTTP status         : HTTP/1.1 500 Internal Server Error
 - Incoming message    : SOAPFault whose faultstring is "unknown". 
                         However, the error message thrown by pingF 
                         is  "Fault being thrown"
 - Client side exeption: <Exception> part of the incoming SOAP fault. 
                         There is stack trace of the error thrown 
                         by the server. But, error message is shown 
                         as "unknown".
 - Server side exeption: N/A
---------------------------------------------------------------------------


--- Ali Sadik Kumlali <[EMAIL PROTECTED]> wrote:

> Thank you very much Saminda. I've examined the lines you addressed.
> I've found followings:
> 
> - After execution, SOAPOverHTTPSender dispatches the response
> according
> to the HTTP status code. 
> - In my case(HTTP 500), it calls AbstractHTTPSender's
> processResponse()
> method.
> - A reference to the input stream extracted from response body is set
> to operation context as following:
>  
>   if(msgContext.getOperationContext() != null) {
>        msgContext.getOperationContext()
>                .setProperty(MessageContext.TRANSPORT_IN, in);
>   }
> 
> What is the purpose of this? Can I reach this property and receive
> the
> input stream within the class that I call the stub? If yes, could you
> please tell me how?
> 
> Also, I examined PingClient sample a little. I changed
> ClientUtil.getPingOMElement() to be able to call pingF service which
> throws an AxisFault when it is called. After I had called it, there
> was
> no AxisFault at either the client or server side althought HTTP
> stream
> says "HTTP 500". This might be because of fireAndForget () whose
> javadoc says "That is, there is no opportunity to get an error from
> the
> service via this API; one may still get client-side errors, such as
> host unknown etc.". But, generated stub does not call
> fireAndForget().
> Anyway, should I expect them both behave the same?
> 
> Thanks again.
> 
> Ali Sadik Kumlali
> 
> --- Saminda Abeyruwan <[EMAIL PROTECTED]> wrote:
> 
> > -----BEGIN PGP SIGNED MESSAGE-----
> > Hash: SHA1
> > 
> > Ali Sadik Kumlali wrote:
> > > Hi again,
> > > 
> > > I've found that
> org.apache.axis2.transport.http.AbstractHTTPSender
> > > really doesn't care about the HTTP status code returned by the
> > service.
> > > Here is the code:
> > > 
> > > -----------------------------------------------------------------
> > > // org.apache.axis2.transport.http.AbstractHTTPSender
> > > protected void executeMethod(...) throws IOException {
> > >     HostConfiguration config = this.getHostConfiguration(...);
> > >     msgContext.setProperty(HTTPConstants.HTTP_METHOD, method);
> > > 
> > >     ...
> > > 
> > >     // -----------------------------------------------
> > >     // executeMethod returns back 202, 500, etc. but
> > >     // it is not handled!
> > >     // -----------------------------------------------
> > >     httpClient.executeMethod(config, method);
> > > }
> > > -----------------------------------------------------------------
> > > 
> > > Is it on purpose? If yes, could you please answer my previous
> > > questions?
> > > 
> > > Thanks a lot.
> > > 
> > > Ali Sadik Kumlali
> > > 
> > > 
> > > --- Ali Sadik Kumlali <[EMAIL PROTECTED]> wrote:
> > > 
> > > 
> > >>Hi all,
> > >>
> > >>The subject may seem contradictory, as it has both "input only"
> and
> > >>"return" words together :)
> > >>
> > >>Here is the scenario:
> > >>- In my WSDL, all the operations have input message only.
> > Therefore,
> > >>I
> > >>assume that I have "input only" services. 
> > >>- WSDL2Java generates *MessageReceiverInOnly as expected.
> > Therefore,
> > >>I
> > >>beleive, my first assumption is confirmed.
> > >>- I add InflowSecurity in service.xml. Therefore, my service
> > requires
> > >>security headers.
> > >>- I don't add OutflowSecurity in the axis2.xml at the client
> side.
> > >>(This is made deliberately to cause the server throwing "missing
> > >>security headers" exception.)
> > >>- I send request by calling generated test code.
> > >>- All the messages goes through TCP/IP Monitor.
> > >>- Request doesn't have security headers as expected.
> > >>- Server sends a SOAPFault back to the client. (HTTP header says
> > >>HTTP/1.1 500 Internal Server Error)
> > >>- However, client doesn't do anything with this exception,
> although
> > >>it
> > >>successfully receives the whole message.
> > >>
> > >>Here are the questions:
> > >>- Is this expected behavior?
> > >>  - If yes, why the server send soap fault for the in-only
> message?
> > >>- Does the client only wait for *any* HTTP response without
> > actually
> > >>caring about what the header is? Or, does it behave differently
> but
> > >>not
> > >>for HTTP 500?
> > >>- I saw the ReplyTo header in the request. Spec says ReplyTo is
> > >>optional for in-only messages. What purposes Axis2 set it for?
> > >>
> > >>
> > >>Thanks for your reading efforts :)
> > >>
> > >>Ali Sadik Kumlali
> > >>
> > >>__________________________________________________
> > >>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 
> > > 
> > Hi,
> > 
> > org.apache.axis2.transport.http.AbstractHTTPSender does care about
> > response http status code.
> > 
> > for a soap request, CommonsHttpTransportSender creates
> > 
> > org.apache.axis2.transport.http.SOAPOverHTTPSender which extends
> > org.apache.axis2.transport.http.AbstractHTTPSender  and if you
> > observe
> > the code in lines 103 to 121, response will be handle according to
> > the
> > http status code. Currently axis2 support 200,202 and 500.
> > 
> > Thank you
> > 
> > Saminda
> > 
> > 
> > -----BEGIN PGP SIGNATURE-----
> > Version: GnuPG v1.4.1 (GNU/Linux)
> > Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org
> > 
> > iD8DBQFEYGf0YmklbLuW6wYRAl7FAJ9CjyfxNL/E8u90i8wcBRPalI3AuQCgwZEg
> > mnq77GrPynQ8awsui8gWbQo=
> > =ACXR
> > -----END PGP SIGNATURE-----
> > 

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

Reply via email to