Some comments and use cases.
Rajini Sivaram wrote:
The bundles that I have at the moment are:
1. org.apache.tuscany.sca.api.jar
14,942 bytes
2. org.apache.tuscany.sca.tuscany.corespi.jar
370,228 bytes
3. org.apache.tuscany.sca.tuscany.runtime.jar
571,159 bytes
4. org.apache.tuscany.sca.tuscany.extensions.jar 996,238
bytes
5. org.apache.tuscany.sca.tuscany.dependencies.jar
43,928,926 bytes
The dependencies bundle seems pretty big :)
>From a packaging point of view, it doesn't make sense to split Tuscany,
Why doesn't it make sense? (more below about scenarios and requirements)
and
it makes a lot more sense to split the 3rd party code.
Did you mean split the 3rd party code from the rest of Tuscany as one
monster 40Mb bundle? or split that monster bundle in a set of smaller
bundles?
I dont want to sound like I am doing a sales pitch for OSGi, but I am not
sure there is a cleaner or easier way to sort out versioning issues that
Tuscany would face if different versions of 3rd party libraries were
used, compared to running Tuscany under OSGi. An OSGi runtime would enable
different versions of 3rd party libraries, different versions of Tuscany
runtime and different versions of Tuscany extensions to coexist in a single
VM with very little extra effort. Implementing something similar with a
classloader architecture outside of OSGi would be significantly more complex
(and will eventually reinvent OSGi).
OK, I like OSGi too :) My previous question about requirements was an
attempt to step back from the technology details and generate some
discussion around the bundle use cases.
Let me try to help and list the use cases I can think of, and how they
relate to the bundles you've listed.
- I develop a business application, and I'm using the SCA APIs, I don't
want any dependency on a particular runtime or whatever version of it.
--> happy with oat.sca.api!
- I developing an extension, using the Tuscany SPI, and running with the
Tuscany runtime
--> happy with oat.corespi
--> would be happy too if oat.core.spi and oat.runtime were a single
bundle as long as the runtime packages are not exported. I guess any
single project that wants to run something is going to have a dependency
on oat.runtime anyway to be able to start the runtime, right?
- I'm developing an extension which depends on a 3rd party dependency
from oat.dependencies
--> not happy with a 40Mb bundle
--> what'll happen if I have two copies of Axis2's Axiom in 2 bundles?
can I still pass an axiom element between 2 extensions using these 2
copies? I guess not...
- I just developed version v4.0.3 of implementation-java, which requires
xml-api v47.12, unfortunately incompatible with the xml-api version in
Tuscany v4.0.2.
--> can we walk through the steps to upgrade my bundle-ized Tuscany
v4.0.2 working with my implementation-java v4.0.3?
- I'm an application developer and I'm developing and deploying a Web
application that uses a Java component and a JSONRPC binding
--> not happy with having to package the 900K bundle in my webapp
--> and I'm not even thinking about deploying the 40Mb bundle in it... :)
Thoughts? It would be good if others could jump-in with the use cases
they have in mind for an bundle-ized Tuscany. The bundle structure that
has been discussed so far seems to go in the right direction, I'm sure
that more use cases will help come up with a useful structure.
--
Jean-Sebastien
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]