Hi Gary,
It is best practise to provide an implementation within a separate bundle
whereas the interface is provided by an other bundle. You can update or
replace the implementation at runtime without stopping the interface bundle.
This is called "hot update". But there are some reasons why an
implementation should be in the same bundle as the interface. For instance
if the "interface" needs to know which implementation is installed (e.g. if
you have to register some implementations to a proxy). In this case the
implementation has to be in the classpath of the interface bundle. The
interface can "see" the implementations if the packages are imported by the
bundle (BTW this is bad practise, because an interface should not know
anything about implementations and should not import them! This problem is
often solved with reflection.). But what about non java resources like some
settings or reflection files? They can not be imported. We can achieve this
with fragmented bundles. All resources of a fragment are in the classpath of
the host bundle at startup time. You do not need to parse resources within
bundles within subdirectories, which is very time consuming  because you
have to install and start all bundles before you can access them. With
fragmented bundles they are just there.

Regards
Roland


Gary Gregory-4 wrote
> [...]
> It's not clear to me that we have the OSGi architecture settles with the
> use of bundle fragments instead of plain bundles. It would be nice to have
> an explanation of what our options are...
> [...]





--
View this message in context: 
http://apache-logging.6191.n7.nabble.com/ANNOUNCEMENT-Apache-Log4j-2-0-beta9-released-tp40819p40910.html
Sent from the Log4j - Users mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
For additional commands, e-mail: log4j-user-h...@logging.apache.org

Reply via email to