Daniel, Does [1] mean that there is no com.sun / jax-ws RI dependendency anymore in Celtix?
thanks, -- dims [1] http://svn.forge.objectweb.org/cgi-bin/viewcvs.cgi/celtix?view=rev&rev=742 On 3/17/06, Daniel Kulp <[EMAIL PROTECTED]> wrote: > > (I apologize in advance for the length of this email... After meeting > with Jim and Sebastien for the last two days, there are a LOT of thoughts > swirling around in my head....) > > One of the questions that came up in the discussions was something along > the lines of "if a user wants to replace the Axis 2 ws implementation > with Celtix, how would they do it?" Or, more generally: "In tuscany, > if I want to replace XXXX with YYYY where YYYY is functionally > equivalent, how can I do it?" (XXXX being a binding.*, container.*, > etc...) > > The "simple" answer is something along the lines of: delete the XXXX jars, > add the YYYY jars, muck with the classpath, done. However, that really > sucks. Telling users to muck with things down on that level is usually > not a good idea and can generally result in bad things happening. The > other problem with this approach is that there is no way that a user > could use BOTH XXXX and YYYY in the same system since XXXX is completely > deleted. > > One idea I came up with is a concept of "aliasing". All components > would always register with a very specific name. Instead of binding.ws, > it would be binding.axis2; instead of container.js, it would be > container.rhino, etc... Tuscany would then have some configuration > that would "bind" the specific name to the "generic" name. This could > come from a config file, a system property, etc.... If the user want > to change the underlying implementation of one of the generic > > One advantage of this that the user then has more control in their > assembly. If they want to use a more "portable" form and allow the > sca/tuscany runtime to use the default, they can do something like > "implementation.js" or "binding.ws" and the tuscany runtime would use the > appropriate one that is configured. However, if the user wants the > specific version (using some advanced feature of axis or something...), > they can specifically use "binding.axis2" or "implementation.rhino". It > allows complete coexistence. In a module, you could actually use both > "binding.axis2" and "binding.celtix" as well as the default "binding.ws" > that may or may not point to one of them. > > > The next "issue" this brings up is how to provide a usable system if the > user HASN'T configured anything (zero config) as well as validate that a > user that has configured something hasn't shot themself in the foot. On > thought with this is that when something registers with the system, it > not only registers it's name, but also can return a list of services it > can provide. Example: Name: binding.axis2, Provides: binding.ws > > With that additional bit of information, the runtime could automatically > wire stuff up with no configuration as well as validate configuration. > (example: I alias "binding.ws" to "binding.jsonrpc". That shouldn't > work since jsonrpc doesn't provide that service.) In the case where > there are two or more implementations that provide a service, it could be > a "first one registered" or "undetermined" or anything. The other > thing about this is that a single "thing" could possibly provide > multiple services. Example: Name: binding.celtix Provides: > binding.ws, binding.corba, binding.blah) > > Anyway, I just wanted to start a discussion about this. This is going > to be important as we start getting Celtix more integrated. > > Thanks! > -- > J. Daniel Kulp > Principal Engineer > IONA > P: 781-902-8727 C: 508-380-7194 > [EMAIL PROTECTED] > -- Davanum Srinivas : http://wso2.com/blogs/
