Starting a new sub-thread...
One of the examples we use all the time when talking about bundles is
that of a web connector. However, this is bad example to take because it
is too simple to highlight some of the issues.
* it only contains one GBean
* that bean has a couple of fairly simple properties
* nothing references that GBean so it has little impact on other bundles
I think the last issue there is systemic to this kind of component: it
is an edge component that takes something from the outside world (i.e.
an inbound socket connection) and hands it off to other services inside
the server. So in Jetty, the HTTPConnector references the JettyContainer
but not the other way around. The same can be said for other edge
connectors such as the EJB Daemon, the ORB, the JMX Connector ...
The first two issues also cloud things because they simplify the
connector to a degenerate case. Things would be more interesting if we
considered a HTTPS connector that split the functionality into three
components: a socket listener, a thread pool and an SSL keystore.
Then, when the user wanted to add an HTTPS port we would need to create
three GBeans and wire them together properly. Bear in mind that
depending on the runtime, the user may want the thread pool and SSL
keystore to be bundled with the connector or may want to use ones from
other bundles.
Other things that may seem quite simple to the user may require several
GBeans be constructed - this is what we do when we package an
application, we create a new bundle with a bucket load of GBeans in it
(e.g. servlet holders, ejb containers, admin objects, ...). Simplicity
comes from not exposing all this detail to the user.
--
Jeremy