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

Reply via email to