> Of course, I fully expect to see responses saying "both". ;-) I guess my
> question is, what is the real problem people need to solve?

+ Team development
+ General manageablitity
+ Distribution of plug-and-play Struts "application-lets"

What this amounts to, I think, is that we need the ability to configure 
an application into several "packages" or "modules". 

If we continue to eliminate restrictions, so that we can have multiple 

+ Struts configurations
+ Application Resources
+ Action prefixes/suffixes
+ ActionServlet services/extensions

it all falls into place.

So, a "package" could be setup under its own subdirectory, 
with its own Struts config and set of Application Resources, and 
incorporated by reference from the (single) ActionServlet config. 

This *may* mean changes to a package's Struts config, if someone else
was 
already using a given package name, but if the package is designed
correctly, 
that should be it. No code or JSP changes. (The Struts config is really
*so* 
cool.)

I'd also like to be able to drop the whole /do/ and *.do thing, and just
be 
able to register the prefix for each package, so the command line would
look 
like 

/module1/Action
/module2/Action

instead of 

/do/module1/Action
/do/module2/Action

To do this right, would also mean changes to the Struts DTD 
(as already discussed), so that there could be multiple 
<struts-config> blocks, along with blocks for service 
extensions (validator/tile mappings, object factories, et cetera).

-T.


[EMAIL PROTECTED] wrote:
> 
> ----- Original Message -----
> From: "Ted Husted" <[EMAIL PROTECTED]>
> To: "Struts Developers List" <[EMAIL PROTECTED]>
> Sent: Wednesday, November 14, 2001 2:18 PM
> Subject: Re: Multiple controller servlets
> 
> > A fix for multiple struts-config has come along first, but the need for
> > multiple resource files is just as great.
> 
> Multiple resource files can be used today, as long as you use a different
> bundle name for each set of resources. This works well when you have
> multiple components (or modules), each having their own set of resources.
> 
> The question then becomes which functionality people consider to be missing:
> 
> a) Loading multiple resource files and handling them all as if they were
> part of the same default resource bundle.
> 
> or
> 
> b) Loading multiple resource files, each into its own bundle,
> "automagically" - that is, without having to add your own initialization
> code.
> 

> 
> --
> Martin Cooper
> 
> > Once both of these features are added, I believe the use-cases I've seen
> > would be addressed.
> >
> > The downside of multiple servlets is
> >
> > 1) Since servlets are multi-threaded, there is no performance advantage
> > to having more than one.
> >
> > 2) If for any reason the servlets wanted to use the same utility Action,
> > each would have to load its own copy.
> >
> > 3) Given multiple configs and resources, most applications would
> > otherwise want all their servlets configured the same way, which means
> > the desired configuration in web.xml have to be replicated.
> >
> > Two use-cases of my own are:
> >
> > 1) Multiple prefix/extension mappings. I tend to design my applications
> > around "packages", each of which have their own "directory". If I could
> > register the root of each package as Action mapping, then I wouldn't
> > have to use /do/ or *.do at all. But that's really another configuration
> > issue, where the servlet can accept multiple masks.
> >
> > 2) Multiple subclassed servlets to handle different services. The only
> > good way to add services to the controller now is to subclass it. One
> > way to avoid inheritance problems would be to have different subclasses
> > available. But, this would really be better solved by Oledg's
> > ServiceFactory.
> >
> > This isn't to say that I'm against multiple ActionServlets, just that we
> > should be sure they are used to solve the right problems, and not used
> > to mask problems with configuring a single ActionServlet.
> >
> > Offhand, the only thing that occurs to me about the strategy outlined
> > would be the idea of keeping the multiple ActinServlet Configurations
> > together in a Collection stored in the Servlet/ApplicationContext, and
> > then passing around a key to that collection in the request. The helpers
> > could then use the key to retrieve the configuration from the
> > Collection.
> >
> > -Ted.
> >
> > Tim W Wilson wrote:
> > >
> > > I would like some feedback on the subject of multiple controller
> servlets.
> > > I have seen some of the previous  discussion in the archives.  The basic
> > > problem has to do with modularity - both in the runtime and at
> development
> > > time.  The current solution of multiple config files certainly solves
> the
> > > many of the development  issues esp. that of managing a single large
> config
> > > file, but what about other resources (messages).   When I first started
> > > using struts my first impulse to deal with modularity was to have
> multiple
> > > controllers and I was quite surprised that I could not do this.  The
> idea
> > > of multiple controllers each self contained seemed quite natural.  I
> have
> > > since developed a patch that works quite well.  But before a submit it I
> > > would like to know:
> > > Does anyone think this is a bad idea or that the current solution is
> > > complete enough?
> > > Is there a problem with the basic design as detailed below:
> > >
> > > The basic problem in the current code is that the ActionServlet stores
> some
> > > attributes in the ServletContext; other servlets overwrite these attrs.
> > > The solution is to have one ActionServletContext per deployed action
> > > servlet.  This context is stored in the ServletContext under a unique
> key
> > > for each controller.  Those attrs that were stored in ServletContext are
> > > stored instead in this "local" context.
> > >
> > > A particular context becomes "active" at request handling time.  The
> first
> > > thing the action servlet does is to put its local context into the
> request
> > > object using a statically defined key (Action.CURRENT_CONTEXT_KEY).
> Thus
> > > the other part of this patch is updating the access to the application
> > > scope attributes.  These mostly reside in the taglibs (though I bet
> someone
> > > accesses them in their Action class impls).  The patch was to create
> helper
> > > methods in RequestUtils that returned these atttrs directly (ex.
> > > RequestUtils.getActionForwards()).  These helper methods then access the
> > > attrs out of the local context in the request using the original keys
> (ex.
> > > Action.ACTION_FORWARDS).
> > >
> > > Now clearly there are times when the active context in the request is
> not
> > > appropriate:
> > > - Welcome pages that were not served by a controller, hence there is no
> > > active context stored in the request.
> > > - Forwarding to jsps that are not part of the "module" - like back to a
> > > welcome page.
> > >
> > > I handled the first problem by having a "primary=true" initparm for a
> > > particular action servlet.  What this means is that the local context
> attrs
> > > for this servlet are dumped into the global ServletContext at init()
> time.
> > > The RequestUtil helper methods understand to look in the global context
> if
> > > no local context is found.  This would also be done for message lookup
> (no
> > > msg in locally defined resources, look in global resources).
> > >
> > > The solution to the second problem seems to require programmer
> intervention
> > > (not good): either he explicitly clears the local context out of the
> > > request before forwarding to an "external" resource or uses a special
> > > forward class that knows to do so.    However, it can be argued that the
> > > welcome page is the only page that one should even consider forwarding
> to
> > > outside the context of a controller servlet;  access to other jsps
> should
> > > go through actions the have been configured with the "forward"
> attribute.
> > > This way each "module" has complete control to all its resources.
> > >
> > > Since I am new to Struts I am no doubt missing things here.  Thankyou
> for
> > > any comments.
> > >
> > > Tim W Wilson
> > > Eclipse WSED Architecture & Development
> > > internet: [EMAIL PROTECTED]
> > > (919) 254-0029 (TL 444-0029)
> > >
> > > --
> > > To unsubscribe, e-mail:
> <mailto:[EMAIL PROTECTED]>
> > > For additional commands, e-mail:
> <mailto:[EMAIL PROTECTED]>
> >
> > --
> > To unsubscribe, e-mail:
> <mailto:[EMAIL PROTECTED]>
> > For additional commands, e-mail:
> <mailto:[EMAIL PROTECTED]>
> >
> 
> --
> To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

-- Ted Husted, Husted dot Com, Fairport NY USA.
-- Custom Software ~ Technical Services.
-- Tel +1 716 737-3463
-- http://www.husted.com/struts/

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to