Sub-applications in Struts 1.1 are one of the biggest advantages over
1.0. They let you break your configuration apart into multiple pieces -
so that different people can work on their piece of the project without
affecting others. This is good for those of us working in a
team-oriented setting where different (groups of) people may be
responsible for different function areas (ok, Bob and Henry - you guys
get the account-maintenance stuff - Frank, Nancy, and Richardo - you
guys get this 'store' module - etc). Still, sub-applications aren't as
functional as they "could be".
Because of the structure imposed on sub-applications [1], I think
several people believe it would be reasonable for sub-applications to be
able to share information with one another[2]. I believe it is expected
behavior, in fact.
Currently, each module loads whatever resources it will need. As a
result, there is unnecessary duplication of certain resources. Some of
those particular resources result in wasting RAM, while others have a
more significant impact. Of those that have a more significant impact,
the most notable is undoubtably the data-source. Data-source is handy.
It's a pool for JDBC connections. The fact that you can configure the
pool to limit connections is undoubtably an important functionality to
those who use it (though I can't say with full certainty, as I do not
use the built-in data-source) - but now that we have sub-applications,
determining how to setup the pool to properly manage connection limits
could be quite ... difficult. Yes, there are many very good OS DBMSs
out there - but we all have to sensibly ration out our connections - if
only because of resource consumption.
The proposal I would like to set forth is thus (this is a suggested order):
1 - refactor data-source instantiation/acquisition so that
duplicates are not created -- *and* sub-apps would they chain the lookup
from the current module to the default module.
2 - refactor message-resource instantiation/acquisition the same way
3 - refactor global-forward ~kind of~ the same way. Global forwards
mentioned in sub-apps would be "pushed up" into the default module.
Yes, I know there's a possibility for clashing.
4 - (optional) introduce module-level forwards that would replace
our current "global" forwards - and have the exact same "scope"
(visibility) as our current "global" forwards.
Disclaimer: No, I haven't yet fully studied what would have to be done
to acheive this proposal in it's entirety. I post this for open
discussion so that ideas can be generated and bad ones pruned.
So, if you take the view that *all* sub-apps are independent of one
another - and should be - obviously this is a very stupid proposal. If,
however, you take the view that all modules are going to be developed in
support of the default module, this is a very logical following (I
think), as it lets you leverage the effort you put into the default
module in your sub-applications.
My view on (3) above is this: I see modules as being like "classes".
All of the resources are instance-level declarations. "Global", in
this sense, would imply being available either apart from the heirarchy,
or being available in the "base class" (which I suppose puts it back at
the "instance"-level actually).
We wouldn't break backward-compatability (that I can think of), since
the changes would be primarily geared toward allowing non-default
modules to access the default modules resources. Nothing (that crosses
my mind!) would have to change for the default module (save for
"global-forwards" being "pushed up" into the default sub-app -- this
wouldn't impact a 1.0 app moving to 1.1 in the slightest).
I suppose, since, as Ted observed, we're involved in "feature lock",
this is something that is viewed as an "enhancement" or a "bug" request.
My view is that it is a bug, but I have to admit I'm unsure about what
precise functionality you all expected to have in 1.1. I should
probably go check the release plan :-), but I don't recall anything
supporting this being there -- nor do I recall seeing anything that
would inhibit this being there :-)
Is this a "post 1.1" thing? Is this even a desirable thing (I believe
it is - what's your opinion)?
(Would the changes necessary to implement 1 & 2 really be that
significant? Those are the really important items as I see it.)
-------------------------------
[1] - Sub-app partitioning gives us something like:
(default)
/ \
Foo Bar
/ \
Baz Bang
[2] - At least non-default sub-apps to share information from the
default sub-app. From [1], Foo would have access to the default
sub-app's config, as would Bang.
--
Eddie Bush
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>