On 8/22/13 07:45 , Felix Meschberger wrote:
Hi Neil

Am 22.08.2013 um 13:04 schrieb Neil Bartlett:

It's possible, but unfortunately quite cumbersome. There is no way to
remove a single package, instead you have to list all of the packages
you still want using the 'org.osgi.framework.system.packages'
property. So you'll have to copy the existing value and then remove
just the package you don't want.

However, why do you need to do this? There is in general no need to
remove system exports just because another bundle exports the package;
OSGi can cope with multiple exports of the same package.
That's the theory which unfortunately breaks in certain contexts.

Take for example javax.transaction: The Java platform (at least in Java 6 where 
this example comes from) provides a subset of this package. The separate JTA 
library has the full package. Consider an application compiled against this 
library: It will import the JTA package with no version (unless you build the 
bundle with a JTA bundle in the class path such as the Geronimo bundle or 
explicitly state the imports).

When deploying such a bundle along with the JTA API bundle you will realize 
that more often than not your JTA consumer bundle will wire to the  platform 
export through the system bundle instead of to the JTA API bundle. Add to this 
soup a case where multiple bundles use the JTA API: Some have proper imports 
and wire to the JTA API bundle, some don't and wire to the system bundle. The 
end result is, that the application just breaks.

So, maybe we in Felix should really just expose the java.* packages in the 
..system.packages property and expose the javax.* package in some ..packages.extra 
mechanism which makes it easy to "omit" them from being exposed ?

As Neil points out, it would be a Felix-only solution. At that rate, why not just invent our own property called felix.system.packages.exclude or something? Seems easier, because otherwise we'd have to duplicate the exported classes in some fashion since the framework is supposed to provide a "reasonable" default set of exports when started with no configuration (i.e., no conf/config.properties file). I would think the javax.* is included in that reasonable default, which means those classes have to appear in default.properties in felix.jar, but properties for users to edit are in conf/config.properties...thus they'd need to be duplicated.

-> richard


Regards
Felix

Incidentally you can easily *add* individual packages by listing them
with the 'org.osgi.framework.system.packages.extra' property.

Neil

On Thu, Aug 22, 2013 at 11:48 AM, bieniekmat <[email protected]> wrote:
Hello,

Thanks for creating Felix, I love it!

Felix exports many useful packages using org.osgi.framework.system.packages,
but it also exports a package that I do not want. I export my own version of
the package with one of the bundles.

Is there any way I could specify that I do not want Felix framework to
export a javax.X package?


Thanks!



--
View this message in context: 
http://apache-felix.18485.x6.nabble.com/Specify-packages-that-should-not-be-exported-by-Felix-framework-tp5004647.html
Sent from the Apache Felix - Users mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to