Hi Shankar,
Great thing to implement.
+1 for writing a wrapper.

Damitha
Uthaiyashankar wrote:

Hi,

Since apache is creating child processes using fork (in linux), only possible option to share data between children is using an ipc method. For example, creating Axis2_worker, conf_context and global pool in a shared memory, and sharing between processes (using apr_shm, apr_rmm). We can use global mutex to control the access of shared memory. An example implementation is given in http://people.apache.org/~sctemme/mod_example_ipc.c. mod_ldap is also using a similar approach to cache and share data between child processes.

However, to hide the low level details from service/module implementers, we might have to write a wrapper to manage the shared memory, growing/shrinking the shared memory according to the demand, creating objects in shared memory, etc.


It is also possible to use apr_dbm/apr_memcache to share data, but those are similar to using a database.

Any other thoughts or comments ??

Regards,
Uthaiyashankar.

Samisa Abeysinghe wrote:

FYI: This mail was in the user list.
I think we have to solve this mod_axis2 related problems, specially for the benefit of the production users.

At a glance, it looks to me as if we can solve this by using either apr_proc_mutex [1] or apr_global_mutex [2]. At a glance, it looks to me as if using apr_global_mutex and locking the stuff could be the solution.

Thoughts please...

[1] http://apr.apache.org/docs/apr/0.9/apr__proc__mutex_8h.html
[2] http://apr.apache.org/docs/apr/0.9/apr__global__mutex_8h.html

Thanks,
Samisa...


-------- Original Message --------
Subject:     Re: Urgent: Specifying scope in Axis2c
Date:     Fri, 12 Oct 2007 08:59:17 +0600
From:     Samisa Abeysinghe <[EMAIL PROTECTED]>
Reply-To:     Apache AXIS C User List <[EMAIL PROTECTED]>
To:     Apache AXIS C User List <[EMAIL PROTECTED]>
References: <[EMAIL PROTECTED]>



Subra A Narayanan wrote:

Hello everyone,

I have run in to an issue which I can't seem to figure out. In my init method in the service skeleton I call the initialization routine of one of the libraries that my web service uses. I notice in my logs that the library initialization function is being called 8 times. This corresponds to the number of apache processes that are running.

This is a problem yet to be solved in Axis2/C. See http://damithakumarage.wordpress.com/2007/09/23/an-axis2-c-design-issue/.
This is a pending issue that needs to be fixed.
The workaround for the time being would be to use some persistent storage to keep a flag and call the init routine based on the flag value.

Samisa...


This is causing a lot of issues because I was under the impression that my web service init function is called only once when the first request comes in. My library sets up some resources which I want to share among all processes. Can this be done?

In Axis2/Java there is a way to specify scope for the webservice (request, session, application) in the services.xml file? can something similar be done in Axis2/c? I took a look at the axis2c code and saw that there is an enum called axis2_scope defined. Is it used for the same purpose as in Axis2/Java?

Thanks for any help.

Subra







---------------------------------------------------------------------
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