Hi,
I've been also working on some enhancements for axis in order to
support some required features to our project. We are using axis2/c
module for apache instead of the standalone server, changes are not
tested for the standalone.
#1 Adds http headers to msg_ctx when using axis2/c module for apache
I noticed however this functionality were only implemented for the
standalone server. When using the axis module for apache http headers
were not added to the msg_ctx so they were not accessible @ the inflow
handlers level for instance.
#2 Adds forbidden definition tags for http forbidden code which is
missing in standard release
#define AXIS2_HTTP_RESPONSE_FORBIDDEN_CODE_VAL 403
#define AXIS2_HTTP_RESPONSE_HTTP_FORBIDDEN_CODE_NAME "Forbidden"
#define AXIS2_HTTP_RESPONSE_HTTP_FORBIDDEN "403 Forbidden"
#3 Adds support to specify feedback for REST requests, when a module
failure occurs.
This issue is related to the difference between soap and rest
requests. When an inflow handler fails two things can happen depending
on the request type:
- For SOAP requests, the inflow handler chain is broken, and all the
outflow fault handlers are invoked. The response soap envelope
response containing a default fault is built by axis in between these
phases, so we can edit the fault accordingly @ the outflow fault
handlers.
- For REST requests, the inflow handler chain is also broken, but the
outflow fault handlers are not invoked. This is not a problem, and is
probably intended, since unlike soap there is no need to create a soap
envelope. The thing is when this happens it always returned 202
ACCEPTED, which is not enough to provide any feedback to the user who
made the request.
@ the inflow handler is now possible to set the desired status code
desired for the response, extra http headers, and/or http content. It
was already possible before, changes just weren't propagated to the
actual response.
inflow handler example with the patch:
..
// For REST requests
if (doing_rest && AXIS2_FAILURE == result)
{
axis2_msg_ctx_set_status_code(msg_ctx, env,
AXIS2_HTTP_RESPONSE_HTTP_UNAUTHORIZED_CODE_VAL);
AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
"[Inflow][authentication_in]
HTTP status code unauthorized");
axutil_stream_t *stream = axutil_stream_create_basic(env);
axis2_char_t *http_content = axutil_strcat(env,
AXIS2_HTTP_RESPONSE_HTTP_UNAUTHORIZED, "\n", NULL);
axutil_stream_write(stream, env, http_content,
axutil_strlen(http_content));
axis2_msg_ctx_set_transport_out_stream(msg_ctx, env,
stream);
}
return result;
}
I think these features may also be of interest for axis2/c users, at
least for us they seemed important, and would be nice to to have to
patch these to each new release of axis. The diff's follow in
attachment.
Regards,
Luís Bilo
------------------------------------------------------------------------
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]