dobbs 02/03/14 09:39:37
Added: notes ComponentLoader.txt
Log:
moved these notes from Fulcrum.
Jason, could you please review these notes a bit. I've tried to
capture some of the stuff we have discussed on IRC, but I think I'm
missing a few things. Of particular interest is the start on the
distinction between components and services. I think you have a
couple more examples that I have missed, and I might have got a couple
of the examples wrong.
Revision Changes Path
1.1 jakarta-turbine-stratum/notes/ComponentLoader.txt
Index: ComponentLoader.txt
===================================================================
ComponentLoader
---------------
FIXME: this info should probably be moved into a package.html doc for
o.a.stratum.component, but we'll wait until the component stuff
is a little more settled.
The ComponentLoader is used by Turbine and Fulcrum and Torque. It's
job is to load components (some of which might also be services) and
call their lifecycle methods.
One goal for the ComponentLoader is to enable someone to extend any
arbitrary class, implement the lifecycle interfaces, and use it as a
component in the Turbine family.
This trick will be useful for migrating some of Fulcrum's services
into components. It may also enable turbine users to migrate their
Turbine 2.1 services to components.
At the moment, the component loader is only used by Turbine to load
Torque and Fulcrum. The components are assumed to be self-sustaining,
and assumed to provide some static methods for interfacing with the
components. The ComponentLoader does not currently store any
references to components once they have been loaded.
FIXME: Still need a better definition to distinguish a service from a
component, including examples to illustrate the differences.
Components vs. Services Services are a kind of component. Many of
them seem to revolve around interactive network interfaces. Some
examples include xmlrpc and ftp. Some items are too fundamental to
any application to be either components or services. Examples include
pooling, caching, database access, security. These examples are
currently services but should be changed to components: upload
service, ??.
Other 2.1->Fulcrum migration plans:
jason can swap all the imports with the transformer in maven and then
people will probably have to poke around for a couple minutes.
Longer-term plans:
let the ComponentLoader reload components without stopping the server.
It will have its own classloader eventually (probably borrowing the
webapp classloader code from catalina). We can look for a
configuration.xml in a standard place in the component's jar or look
at the manifest and use that to configure the component.
We'll probably provide some kind of key->value map to store references
to the components, or treat them similarly to the way pull tools are
handled -- where request scope tools are loaded for each request.
Something similar might work for components as well. Another option
is to provide a reference to a pool of a particular kind of component.
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>