Tyagi, Rahul wrote:



Thanks Thomas,


Sure you can contribute and thanks for volunteering. I am not sure, During 
inception of a project do we mail to dev mailing list or not?

I am currently looking for reusable components within Geronimo which can be of 
help while developing WorkManager API and its configuration. I liked idea of 
developing it as SPI and implement WorkManager as wrapper around that.


Prior to starting implementation we would need to see following things.
1. Current threading infrastructure within Geronimo.

It is very distributed - one of this things I think it is important to address.

The current J2CA WorkManager is in org.apache.geronimo.connector.work

Every Jetty connector wraps its own ThreadedServer which contains its own Jetty ThreadPool. I think the Tomcat connector does the same thing.

OpenEJB has its own service model that use the DefaultThreadPool.

2. Configuration of components as GBean.

Let's define the interfaces and components first - wrapping them as GBeans after should be easy.

3. Which threading API we would/may use, Currently Geronimo is using Doug's 
API, but we have to see whether we can use JDK 1.5 java.util.concurrent pkg or 
back port of that, For this discussion we need to socialize it with team.

We do not want to pre-req the JDK1.5. runtime at this time so everything still needs to run on JDK1.4. Switching from the old concurrent API to the backport now may make things easier when we do decide to pre-req 1.5 later.


4. Should we use WorkManager for all work processing or use blend of ThreadPool 
and WorkManager.

I think the APIs emphasis should be on Work and having Work executed rather than on the implementation mechanism (e.g. a ThreadPool). The initiators here (web, ejb, connector, timer, ...) all have work that needs to be done (such as a request) but do not need to know about how it is being done (e.g. which thread is being used).

I do think we need to extend the basic model from JSR-237 with the ability to classify the Work through metadata. This would be used by the scheduler to select the mechanism used to perform it. For example, certain requests could be dispatched using higher priority threads than others based on application, static vs. dynamic, or other things meaningful at the web level.


5. Do we need to provide transaction management for WorkManager threads.


I don't think we should automatically perform transaction demarcation for managed threads - that should be left to the Work itself. However, one concept we have is of a TransactionContext and to simplify Work implementations we could say we will always bind an UnspecifiedTransactionContext to the thread.

--
Jeremy

Reply via email to