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]>

Reply via email to