Discussion:
[Axis2][1.0] Handling HTTP 500 errors for input only requests!
Ali Sadik Kumlali
2006-05-08 14:53:08 UTC
Permalink
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
Ali Sadik Kumlali
2006-05-08 19:48:23 UTC
Permalink
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
Post by Ali Sadik Kumlali
Hi all,
The subject may seem contradictory, as it has both "input only" and
"return" words together :)
- 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.
- 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
Ali Sadik Kumlali
2006-05-09 08:21:14 UTC
Permalink
Hi,

Does anyone have a solution or knowledge about this? It's really a big
problem as it can cause message loss. For example, if request doesn't
pass the security check, service sends a soap fault back wrapped in
HTTP 500. However, generated client code doesn't do anything with it.
Therefore, client application assumes that its request accepted. In
this scenario, neither the client nor the server knows the problem
since there is no exception thrown in either side.

It would be great, if someone was kind enough to respond my post.

Thanks in advance.

Ali Sadik Kumlali
Post by Ali Sadik Kumlali
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.
-----------------------------------------------------------------
// 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
Post by Ali Sadik Kumlali
Hi all,
The subject may seem contradictory, as it has both "input only" and
"return" words together :)
- In my WSDL, all the operations have input message only.
Therefore,
Post by Ali Sadik Kumlali
I
assume that I have "input only" services.
- WSDL2Java generates *MessageReceiverInOnly as expected.
Therefore,
Post by Ali Sadik Kumlali
I
beleive, my first assumption is confirmed.
- I add InflowSecurity in service.xml. Therefore, my service
requires
Post by Ali Sadik Kumlali
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.
- 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
Post by Ali Sadik Kumlali
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
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
Saminda Abeyruwan
2006-05-09 09:59:16 UTC
Permalink
Post by Ali Sadik Kumlali
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.
-----------------------------------------------------------------
// 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
Post by Ali Sadik Kumlali
Hi all,
The subject may seem contradictory, as it has both "input only" and
"return" words together :)
- 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.
- 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
Ali Sadik Kumlali
2006-05-09 13:14:24 UTC
Permalink
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
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Post by Ali Sadik Kumlali
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.
Post by Ali Sadik Kumlali
-----------------------------------------------------------------
// 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
Post by Ali Sadik Kumlali
Hi all,
The subject may seem contradictory, as it has both "input only" and
"return" words together :)
- In my WSDL, all the operations have input message only.
Therefore,
Post by Ali Sadik Kumlali
Post by Ali Sadik Kumlali
I
assume that I have "input only" services.
- WSDL2Java generates *MessageReceiverInOnly as expected.
Therefore,
Post by Ali Sadik Kumlali
Post by Ali Sadik Kumlali
I
beleive, my first assumption is confirmed.
- I add InflowSecurity in service.xml. Therefore, my service
requires
Post by Ali Sadik Kumlali
Post by Ali Sadik Kumlali
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.
- 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
Post by Ali Sadik Kumlali
Post by Ali Sadik Kumlali
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
Ali Sadik Kumlali
2006-05-09 20:06:17 UTC
Permalink
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: "Incoming message input stream is null"
- 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
---------------------------------------------------------------------------
Post by Ali Sadik Kumlali
Thank you very much Saminda. I've examined the lines you addressed.
- 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
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
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Post by Ali Sadik Kumlali
Hi again,
I've found that
org.apache.axis2.transport.http.AbstractHTTPSender
Post by Ali Sadik Kumlali
really doesn't care about the HTTP status code returned by the
service.
Post by Ali Sadik Kumlali
-----------------------------------------------------------------
// 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
Post by Ali Sadik Kumlali
Hi all,
The subject may seem contradictory, as it has both "input only"
and
Post by Ali Sadik Kumlali
Post by Ali Sadik Kumlali
"return" words together :)
- In my WSDL, all the operations have input message only.
Therefore,
Post by Ali Sadik Kumlali
Post by Ali Sadik Kumlali
I
assume that I have "input only" services.
- WSDL2Java generates *MessageReceiverInOnly as expected.
Therefore,
Post by Ali Sadik Kumlali
Post by Ali Sadik Kumlali
I
beleive, my first assumption is confirmed.
- I add InflowSecurity in service.xml. Therefore, my service
requires
Post by Ali Sadik Kumlali
Post by Ali Sadik Kumlali
security headers.
- I don't add OutflowSecurity in the axis2.xml at the client
side.
Post by Ali Sadik Kumlali
Post by Ali Sadik Kumlali
(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
Post by Ali Sadik Kumlali
Post by Ali Sadik Kumlali
it
successfully receives the whole message.
- Is this expected behavior?
- If yes, why the server send soap fault for the in-only
message?
Post by Ali Sadik Kumlali
Post by Ali Sadik Kumlali
- Does the client only wait for *any* HTTP response without
actually
Post by Ali Sadik Kumlali
Post by Ali Sadik Kumlali
caring about what the header is? Or, does it behave differently
but
Post by Ali Sadik Kumlali
Post by Ali Sadik Kumlali
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
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
Ali Sadik Kumlali
2006-05-09 20:16:03 UTC
Permalink
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
---------------------------------------------------------------------------
Post by Ali Sadik Kumlali
Thank you very much Saminda. I've examined the lines you addressed.
- 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
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
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Post by Ali Sadik Kumlali
Hi again,
I've found that
org.apache.axis2.transport.http.AbstractHTTPSender
Post by Ali Sadik Kumlali
really doesn't care about the HTTP status code returned by the
service.
Post by Ali Sadik Kumlali
-----------------------------------------------------------------
// 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
Post by Ali Sadik Kumlali
Hi all,
The subject may seem contradictory, as it has both "input only"
and
Post by Ali Sadik Kumlali
Post by Ali Sadik Kumlali
"return" words together :)
- In my WSDL, all the operations have input message only.
Therefore,
Post by Ali Sadik Kumlali
Post by Ali Sadik Kumlali
I
assume that I have "input only" services.
- WSDL2Java generates *MessageReceiverInOnly as expected.
Therefore,
Post by Ali Sadik Kumlali
Post by Ali Sadik Kumlali
I
beleive, my first assumption is confirmed.
- I add InflowSecurity in service.xml. Therefore, my service
requires
Post by Ali Sadik Kumlali
Post by Ali Sadik Kumlali
security headers.
- I don't add OutflowSecurity in the axis2.xml at the client
side.
Post by Ali Sadik Kumlali
Post by Ali Sadik Kumlali
(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
Post by Ali Sadik Kumlali
Post by Ali Sadik Kumlali
it
successfully receives the whole message.
- Is this expected behavior?
- If yes, why the server send soap fault for the in-only
message?
Post by Ali Sadik Kumlali
Post by Ali Sadik Kumlali
- Does the client only wait for *any* HTTP response without
actually
Post by Ali Sadik Kumlali
Post by Ali Sadik Kumlali
caring about what the header is? Or, does it behave differently
but
Post by Ali Sadik Kumlali
Post by Ali Sadik Kumlali
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

Loading...