Thomas Watson wrote:
In this case I would say that the Knopflerfish behavior is the most
correct behavior followed by Equinox. There was a clarification to the
specification recently that mandated that when resolving a bundle the
Framework must not allow a bundle to get wired to a package which is
exported from an uninstalled bundle. It sounds like Felix still allows
bundles to resolve to packages exported by uninstalled bundles.
I thought the clarification was in 4.1 that we started to allow it,
because we used to not allow it in R4.
Technically Equinox does not break the contract of the specification
because the refreshPackages method allows for a great range of freedom
when it comes to deciding which bundles belong to the graph of bundles
that get refreshed. Note that one acceptable implementation is to
restart the Framework which would essentially restart all bundles. In
the Equinox case a call to refreshPackages pulls in any uninstalled
bundles that are removal pending state, in this case Bundle A. This
forces both Bundle B and Bundle C to be refreshed and unresolved.
Agreed. The spec is loose here.
-> richard
Tom
Inactive hide details for "Alin Dreghiciu" ---07/29/2008 03:35:25
AM---Hi guys, I stumbled yesterday on different behavior whil"Alin
Dreghiciu" ---07/29/2008 03:35:25 AM---Hi guys, I stumbled yesterday
on different behavior while refreshing packages
From:
"Alin Dreghiciu" <[EMAIL PROTECTED]>
To:
"OSGi Alliance - General" <[email protected]>
Date:
07/29/2008 03:35 AM
Subject:
[osgi-dev] Refresh package behavior
------------------------------------------------------------------------
Hi guys,
I stumbled yesterday on different behavior while refreshing packages
on the 3 OS framework implementations Felix/Equinox/Knopflerfish and
I'm wondering which one do you think is according to the specs.
So, I have:
1. bundle A exporting packages P1 and P2
2. Bundle B importing package P1
3. Bundle C importing package P2
4. Bundles A,B,C are started (so resolved)
Then I uninstall bundle A. As I expected bundle B and C remain started
so packages P1 and P2 are resolved and wired to bundle A.
Then I do a refresh on bundle B. After this the state of the bundles B
and C is different on the 3 implementations:
Felix: bundle B and C will still be resolved and started.
Equinox: both bundles B and C will be in installed state and cannot be
resolved (missing imports for P1 and P2)
Knopflerfish: bundle B will in installed state and cannot be resolved
(missing import for P1) and bundle B will be in started state (so it
is resolved)
So, which one is the correct behavior. Note that I used the shell
command (refresh) available in all of this implementations not the
package admin refresh packages so it can be that the refresh command
did different things not only call the package admin refreshPackages.
This fact I did not check.
Regards,
--
Alin Dreghiciu
http://www.ops4j.org - New Energy for OSS Communities - Open
Participation Software.
http://www.qi4j.org - New Energy for Java - Domain Driven Development.
http://malaysia.jayway.net - New Energy for Projects - Great People
working on Great Projects at Great Places
_______________________________________________
OSGi Developer Mail List
[email protected]
https://mail.osgi.org/mailman/listinfo/osgi-dev
------------------------------------------------------------------------
_______________________________________________
OSGi Developer Mail List
[email protected]
https://mail.osgi.org/mailman/listinfo/osgi-dev
_______________________________________________
OSGi Developer Mail List
[email protected]
https://mail.osgi.org/mailman/listinfo/osgi-dev