On Tue, 6 Nov 2001 20:32, Paul Hammant wrote:
> Peter,
>
> >>For the sake of example - can we talk in terms of Jesktop (my bizarre
> >>GUI app hoster). Jesktop hosts GUI apps that need Swing, some
> >>DesktopKernel access and some "Frimble" access for abstraction of
> >>Windowlike containment.
> >
> >What we are talking about is the following. Almost all container based
> >systems define ClassLoader pattern using the following model
> >
> >System ClassLoader <--- Client API ClassLoader <--- + --- Container
> >
> >
> > + --- Component1
> >
> >
> > + --- Component2
> >
> >
> > + --- Component3
> >
> >
> > + --- Component4
>
> And in the context of my example, Container is Phoenix Impl & Excalibur
> etc, Component 1,2,3,4 are Jesktop JAMES, DB & Ftpserver?
The above diagram holds for any container style API. In the specific instance
of the Phoenix container then it would be as you indicated.
> The diagram above is too simple for me Peter. I think you hinting that
> this pattern exists many times in a tree. At top level for Phoenix, and
> lower down for Phoenix App.
Sorta. It happens in implementations of most Container style APIs. So if we
had an immaginary Meeplet API. It would probably require a separate
ClassLoader for the actual Meeplet API (ie client API), another ClassLoader
for the Meeplet Container and separate ClassLoaders for every Meeplet
application. Now replace Meeplet with Servlet or Mailet or Block or whatever
and the above sentence should still make sense.
Now I am saying that the pattern *should* exist at multiple places in a
Phoenix ClassLoader tree - unfortunately it doesn't atm.
The reason is that we still use hierarchial ClassLoader. Any application
hosted in Phoenix uses something like
System <--- Phoenix API <--- .sar ClassLoader
Currently "Phoenix API" includes excalibur, phoenix-client, framework and
logkit and anything in ${phoenix.home}/lib. In the future the "Phoenix API"
will be reduced to framework + phoenix-client.
Now if I wanted to implement a Servlet engine then presumably the .sar
ClassLoader would be the "Servlet Container" ClassLoader for the
servlet engine. Currently it is not possible to specify the "Servlet API"
ClassLoader that just contains servlet.jar and is a parent of the
.sar/"Servlet Container" ClassLoader. However this is reqiuired by the
servlet spec.
> In places. But I really need to see a big picture tree with named nodes.
If only there was a web-enabled whiteboard that we could use ;)
> Sorry bro, but its kinda needed by my graphical mind.
I think best in pictures too ;)
This is what I would like to do if I was going to be creating a Mailet engine.
SC = System ClassLoader
PCA = Phoenix Client API (phoenix-client.jar, avalon-framework.jar and also
logkit and excalibur atm)
PK = Phoenix Kernel/Container implementation
MA = Mailet API
JA = Mailet Engine AKA James
MIA = Mailet Instances Application (set of mailets that form an application)
And heres the pretty picture
+ <--- PK
|
|
SC + <--- PCA + <--- + <--- JA
| |
| |
+ <--- MA + <--- +
|
|
+ <--- MIA
Now using the following categorization scheme
K = Container/Kernel
CAPI = Client API
HC = Hosted Component
If you look at the "Phoenix" container level then the above would breakdown as
K == PK
CAPI == PCA
HC == JA
If you look at the "Mailet" container level then
K == JA
CAPI == MA
HC == MIA
Does that make it easier to grok ? ;)
--
Cheers,
Pete
------------------------------------------------------------
militant agnostic: i don't know, and you don't know either.
------------------------------------------------------------
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>