The following info may be somewhat related to this discussion....
For the recursive proposal under consideration in the spec, there is
a way to specify a composite property which can be a complex type.
Child components may have properties configured using an XPath
expression that point to a property on their parent. If we support
some form of inclusion for properties, the composite property can
actually be another xml file. This would allow us to define a
"complex configuration" type that is edited by administrators in
another xml file and then have runtime system services configured
using xpath expressions pointing to parts of that complex type. This
will allow us to avoid having admins mess when SCDL of system
composites.
Thoughts?
Jim
On Apr 13, 2006, at 10:54 AM, Jean-Sebastien Delfino wrote:
Jeremy Boynes wrote:
Jean-Sebastien Delfino wrote:
Daniel Kulp wrote:
Just a quick question: has any actions been taken on this issue
yet? Anymore thoughts or suggestions? Thanks!
Dan
If we want to have a solution for this in our first release
before JavaOne, given the time we have left I think we need to
take a very simple approach. So here's what I'd like to suggest:
- We do not change the programming model, an application
developer just says <binding.ws> to declare a web service binding
- We probably don't have time to augment the programming model
with enough metadata and policies or profiles that will allow us
to dynamically pick a particular binding extension implementation
- We just allow multiple implementations of a particular binding
(<binding.ws> for example) to exist on the classpath of the server.
- We allow the system administrator to configure the binding
extensions that he wants active in a particular server
- We could invent a new configuration file listing the binding
extensions to activate, or we can just say that the system
administrator can configure the extensions in a system.fragment
file under tomcat/conf.
I would be concerned here about putting all the implementation
details for all the extensions in a single file. The existing
implementations already use multiple components and as they get
more sophisticated they are only going to use more.
I do like the idea though of having one file where the
administrator can tweak the system configuration.
I'd suggest therefore that we have one file in the tomcat conf
tree (perhaps conf/tuscany/system.conf) which uses the proposed
recursive model to declare each of the extensions as a sub-
component. Something like:
<composite name="tuscany.system">
<component name="axis2 extension">
<implementation name="axis2.module"/>
</component>
<!--
<component name="celtix extension">
<implementation name="celtix.module"/>
</component>
-->
</composite>
where "axis2.module" and "celtix.module" are the names of
composites that are defined by each extension.
In other words, instead of having fixed system.fragment files
buried in the binding extension jars, we have one system.fragment
file under tomcat/conf, where the system administrator can
configure which binding extension implementations he wants to
activate. We could also use the same approach to configure which
component implementation / container types to activate on a
particular server.
I agree we should move away from merging together system.fragment
files. I think the proposal above moves in the direction you
proposed but hides the internals of the extensions from the
administrator.
We could also extend this to activate binding and container
extensions on an application basis, but I'm not even sure we need
this right away. I think we can live with a per server config for
now, and revisit the approach later in June.
Agreed.
--
Jeremy
+1 from me, I like that. Shifting the configuration of the
composite level is a (better) extension of what I was proposing,
although it requires us to get support for composites in place, but
it's a good move as well :) so if other people agree then I'd like
to see this implemented for our May release.
--
Jean-Sebastien