Bruce Snyder wrote:

On 10/15/05, Jules Gosnell <[EMAIL PROTECTED]> wrote:
Jeff Genender wrote:

Jules,

Thanks for the update.  I like whats been done.  Do you think WADI is
ready begin becoming a part of Geronimo? (i.e ready for prime time)
I have lots more to do, but I would certainly be interesting in starting
integration work with Geronimo. I always had Geronimo in mind whilst
working on WADI, it has just been that, until certification, simply
implementing specs correctly has been foremost on the G agenda. Now that
we have reached this goal, the next one becomes enterprise-readiness. I
hope that WADI can help with this. Would you, or anyone else on the
list, be interested in taking a look at it and getting involved in the
integration ?

I'm definitely interested in getting involved with this, Jules. In
fact, I've already typed in the JCache interfaces and only need to
commit them to the Geronimo repo (and then work on converting OpenEJB
2 to use them, of course). This spec will most certainly help out any
mechanism needing caching.

Glad to hear we will have a JCache API done - good work.

I have a few provisos about assuming that JCache is THE solution to this range of problems and this is the reason why I rejected the JCache API on my last redesign of WADI (although I think that the next one will have to incorporate it and extend it).

JCache focusses (as far as my understanding goes), simply on the location of the state required by a process and not the location of the process itself. WADI tries to be neutral in this respect and should be equally at home relocating state to process or process to state. e.g. I can migrate a session in underneath an incoming request, or redirect/proxy a request to the node holding the state (and then 'stick' the client to this node so that subsequent requests travel directly to the session's location). The latter solution has distinct advantages :

1. Http requests are often much smaller than Http sessions. (the same would hold true for an EJB invocation and a SFSB)

2. Many Http requests may run through an HttpSession concurrently, but an HttpSession may only be in one place at once. i.e., if a number of nodes all receive an http request for the same session it is quicker for them to all relocate their requests to the session in question, where they may run concurrently, than to relocate the session from request to request which may only be done serially. This is not an issue with an SFSB (I assume) since only one thread is allowed access to an SFSB at any one time anyway (I think?).

3. [de]serialisation is expensive and error prone (may tickle bugs in application code). HttpSessions may have activation/passivation listeners registered (is there an equivalent for SFSBs?) which could be expensive to call. If we can avoid moving a session, it is a good thing.

4. The optimal location for a session is on the same node as its bucket owner. If the two can be colocated, notifications about creation, relocation and destruction can be run locally instead of remotely. So once this colocation is achieved (which it should be from the start, since each node can restrict itself to only generating session ids which map to buckets of which it is the owner), we want to avoid moving the session again, perhaps even if a request for it lands elsewhere.

So, I guess, whilst you have your head in the JCache API and are looking at JCache and OpenEJB, these would be very useful facts to consider. What is going to be the best way to fit these requirements into an architecture that sits around a JCache ? Perhaps we define an additional API which allows the relocation of an 'invocation' to a given CacheEntry, rather than the other way around. If the JCache instance that we are using implements this interface, then we enable the request-relocation functionality. Then we will be able to run our stuff with other jcache impls (which is bound to be a requirement), or our own, in which case you get the extra fn-ality....

Sound like a good idea ?

Jules


Bruce
--
perl -e 'print unpack("u30","D0G)[EMAIL 
PROTECTED]&5R\"F)R=6-E+G-N>61E<D\!G;6%I;\"YC;VT*"
);'

The Castor Project
http://www.castor.org/

Apache Geronimo
http://geronimo.apache.org/


--
"Open Source is a self-assembling organism. You dangle a piece of
string into a super-saturated solution and a whole operating-system
crystallises out around it."

/**********************************
* Jules Gosnell
* Partner
* Core Developers Network (Europe)
*
*    www.coredevelopers.net
*
* Open Source Training & Support.
**********************************/

Reply via email to