Spring.Net how does WebApplicationContext.GetObject handle concurrent requests?

Apologies if I have missed something obvious here but having gone through the documentation, forums and googled for a number of hours, I just can't find a definitive answer to the following questions:

How does the WebApplicationContext.GetObject() method handle concurrent requests? Are the requests serialized or executed in parallel? Is there any performance data available to demonstrate how it behaves under load?

Thanks in advance for your help,

Andrew

Answers


I received the response from Mark Pollack on the Spring.Net forum which gives a pretty definitive answer (Mark is Co Lead on the Spring.Net project):

"Hi,

There is a lock around retrieving/creating singleton objects and non singleton objects, prototypes, are effecdtively 'newed' within the calling thread. I've revived some tests around this area, ConcurrentObjectFactoryTests, which had a config file for ages but no test impl using it, as well as in DefaultListableObjectFactoryPerfTests.

There were some microbench marks that I did a while ago when there was attention on this in the Java world between Spring and Guice. (The cutely named "Semi Useless Benchmark").

http://www.javalobby.org/articles/gu...ource=archives

http://www.jroller.com/Solomon/entry...e_improvements

The ".NET ported" classes from the benchmark are inside DefaultListableObjectFactoryPerfTests. I don't have any performance data for Spring.NET. The community has reported issues with concurrency in the past (quite a while ago) which were fixed and I'm unaware of any specific issues in this area.

HTH, Mark"


Need Your Help

Enable/disable editing of a form field from code

lotus-notes lotus-domino domino-designer-eclipse

I'm not a Notes programmer, however, for my sins, have been working on some Notes features for an in-house project recently. I need to enable/disable editing of a field depending on circumstances. It

CodeIgniter global variable

php codeigniter

I am using $data in all my views $this->load->view('my_view', $data);