Hy all,

Reading your performance article on http://wso2.org/library/3532 (nice results by the way) I think that building an CGI exec could cause some amount of bottleneck (imagine hundreds of CGI parallel processess running and starting and stoping 10k processes in second) , I know that the CGI exec is going to be very light (just simple input parsing and output forming) , but I think we should agree with Samisa Abeysinghe when he proposed FastCGI as this method would keep Axis2/C good results as well solve concurrency problem with logging, what I would suggest is SCGI as being much lighter and easier to implement protocol similar to FastCGI. If some servers don't have (Fast/S)CGI interfaces there are small light CGI execs available to redirect input.

   What are your opinions on this?

Nandika Jayawardana wrote:
Hi Nikola,

In implementing the axis2 CGI app, you need to understand how axis2
server side works in the context of a web server deployment. I think
going through the source code of axis2 apache module will help you
understand what needs to be done.  You can find the source for it at
"axis2c\src\core\transport\http\server\apache2". There are a set of
functions that works as the axis2's http server side API. These
functions are defined in "axis2_http_transport_utils.h" header. The
server modules work by extracting the http headers and content using
the Web Server's API and using these functions to invoke axis2.

So in the case of CGI, extracting http headers is very simple since
they are available as environment variables. Also the http content is
available in stdin.

Following are the things you need to figure out.

1. Defining the endpoint urls for axis2 services the are deployed under CGI.
 { In case of apache module, the service endpoint url for a service
would be http://<domain>:port/axis2/services/<service name>. Apache
module is configured such that all requests that have
http://<domain>:port/axis2 will be directed to mod_axis2 module. In
case of CGI, I am not sure whether web servers allow such mapping. In
that case one option would be to have the endpoint url something like
http://<domain>:port/cgi-bin/axis2_cgi.exe/services/<service name> }

2. Solving the log file problem in case of concurrent requests.

3. Specifing the axis2 configurations to cgi executable.
These configurations include axis2 repository location , log file
location etc. In case of Apache module, these are defined in the
configuration file.

I guess, once you figure out these, you can reuse most of the code in
axis2 apache module for your implementation as well.

Regards
Nandika

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to