I agree that most extensions would be best written as independant
servlets that plug into the application alongside the Struts
ActionServlet. Though, I'm not sure they would need to register with the
ActionServlet to access other parts of the framework. 

I haven't worked with the Digester directly, but most of the other
Struts services are already exposed through the application context.
Custom tags, for example, already access the Action Mappings this way.
So any other servlet in the application (since that's all JSP's are)
should be able to do the same.

Another example is the Generic Connection Pool. The datasource is
exposed through the application context and other services, like the
TagLibs JDBC tags, can use the pool without knowing anything about
Struts (or Struts knowing anything about them). 

So I would suggest that if there are other services that an extension
needs to share that we expose them through the Application context. 

Oleg V Alexeev wrote:

> To support flexible extensions mechanism for struts there are can be
> made some additions to the core structure of the framework -
> 
> 1. Add ability to register components or external servlets (at
>    application level) via struts-config file.
> 2. Give such external components or servlets ability to use action
>    mappings database from ActionServlet.
> 3. Extend core API of struts to support pluggable extensions - for
>    example use event model or direct calls via registrations in action
>    mappiongs database.
> 
> The best way for my mind is to write external servlets, register it in
> struts ActionServlet and use it as external services. This approach
> can be useful in case of mutliple ActionServlet instances in one
> application - every ActionServlet subscribe to use and uses some
> amount of external services.

Reply via email to