JRE and system packages tuning

Some packages are part of the JRE, but could be provided by tier libraries.

Some examples of package in this case are:

  • javax.xml.stream package is provided by the JRE, but also by Apache Geronimo Spec bundles (and the implementation of provided by Woodstox).

  • com.sun.org.apache.xerces.internal.dom package is provided by the JRE, but also by Apache Xerces.

  • javax.activation package is provided by the JRE, but also by Apache Geronimo Spec bundles.

  • javax.annotation package is provided by the JRE, but also by Apache Geronimo Spec bundles.

  • etc ...

We should define in the Karaf instance which packages should be provided by the JRE or by tier bundles.

Moreover, we should manage the exported packages of JRE depending of the JRE version: the JRE 1.6 provides more packages
than the 1.5 one.

To customize this in Karaf, you can tune the etc/jre.properties file.

In the etc/jre.properties file, you have two properties jre-1.5 and jre-1.6.

They allow you to define the packages exported by the JRE (in function of the runtime version).
Each property provide the exhaustive list of packages provided by the JRE (and so part of the sytem packages).

For instance, a "standard" Karaf distribution provides the following etc/jre.properties:

#
# Java platform package export properties.
#

# Standard package set.  Note that:
#   - javax.transaction* is exported with a mandatory attribute
jre-1.5= \
 javax.accessibility, \
 javax.activity, \
 javax.crypto, \
 javax.crypto.interfaces, \
 javax.crypto.spec, \
 javax.imageio, \
 javax.imageio.event, \
 javax.imageio.metadata, \
 javax.imageio.plugins.bmp, \
 javax.imageio.plugins.jpeg, \
 javax.imageio.spi, \
 javax.imageio.stream, \
 javax.management, \
 javax.management.loading, \
 javax.management.modelmbean, \
 javax.management.monitor, \
 javax.management.openmbean, \
 javax.management.relation, \
 javax.management.remote, \
 javax.management.remote.rmi, \
 javax.management.timer, \
 javax.naming, \
 javax.naming.directory, \
 javax.naming.event, \
 javax.naming.ldap, \
 javax.naming.spi, \
 javax.net, \
 javax.net.ssl, \
 javax.print, \
 javax.print.attribute, \
 javax.print.attribute.standard, \
 javax.print.event, \
 javax.rmi, \
 javax.rmi.CORBA, \
 javax.rmi.ssl, \
 javax.security.auth, \
 javax.security.auth.callback, \
 javax.security.auth.kerberos, \
 javax.security.auth.login, \
 javax.security.auth.spi, \
 javax.security.auth.x500, \
 javax.security.cert, \
 javax.security.sasl, \
 javax.sound.midi, \
 javax.sound.midi.spi, \
 javax.sound.sampled, \
 javax.sound.sampled.spi, \
 javax.sql, \
 javax.sql.rowset, \
 javax.sql.rowset.serial, \
 javax.sql.rowset.spi, \
 javax.swing, \
 javax.swing.border, \
 javax.swing.colorchooser, \
 javax.swing.event, \
 javax.swing.filechooser, \
 javax.swing.plaf, \
 javax.swing.plaf.basic, \
 javax.swing.plaf.metal, \
 javax.swing.plaf.multi, \
 javax.swing.plaf.synth, \
 javax.swing.table, \
 javax.swing.text, \
 javax.swing.text.html, \
 javax.swing.text.html.parser, \
 javax.swing.text.rtf, \
 javax.swing.tree, \
 javax.swing.undo, \
 javax.transaction; javax.transaction.xa; partial=true; mandatory:=partial, \
 javax.xml, \
 javax.xml.datatype, \
 javax.xml.namespace, \
 javax.xml.parsers, \
 javax.xml.transform, \
 javax.xml.transform.dom, \
 javax.xml.transform.sax, \
 javax.xml.transform.stream, \
 javax.xml.validation, \
 javax.xml.xpath, \
 org.ietf.jgss, \
 org.omg.CORBA, \
 org.omg.CORBA_2_3, \
 org.omg.CORBA_2_3.portable, \
 org.omg.CORBA.DynAnyPackage, \
 org.omg.CORBA.ORBPackage, \
 org.omg.CORBA.portable, \
 org.omg.CORBA.TypeCodePackage, \
 org.omg.CosNaming, \
 org.omg.CosNaming.NamingContextExtPackage, \
 org.omg.CosNaming.NamingContextPackage, \
 org.omg.Dynamic, \
 org.omg.DynamicAny, \
 org.omg.DynamicAny.DynAnyFactoryPackage, \
 org.omg.DynamicAny.DynAnyPackage, \
 org.omg.IOP, \
 org.omg.IOP.CodecFactoryPackage, \
 org.omg.IOP.CodecPackage, \
 org.omg.Messaging, \
 org.omg.PortableInterceptor, \
 org.omg.PortableInterceptor.ORBInitInfoPackage, \
 org.omg.PortableServer, \
 org.omg.PortableServer.CurrentPackage, \
 org.omg.PortableServer.POAManagerPackage, \
 org.omg.PortableServer.POAPackage, \
 org.omg.PortableServer.portable, \
 org.omg.PortableServer.ServantLocatorPackage, \
 org.omg.SendingContext, \
 org.omg.stub.java.rmi, \
 org.omg.stub.javax.management.remote.rmi, \
 org.w3c.dom, \
 org.w3c.dom.bootstrap, \
 org.w3c.dom.css, \
 org.w3c.dom.events, \
 org.w3c.dom.html, \
 org.w3c.dom.ls, \
 org.w3c.dom.ranges, \
 org.w3c.dom.stylesheets, \
 org.w3c.dom.traversal, \
 org.w3c.dom.views, \
 org.xml.sax, \
 org.xml.sax.ext, \
 org.xml.sax.helpers

# Standard package set.  Note that:
#   - javax.transaction* is exported with a mandatory attribute
jre-1.6= \
 javax.accessibility, \
 javax.activation, \
 javax.activity, \
 javax.annotation, \
 javax.annotation.processing, \
 javax.crypto, \
 javax.crypto.interfaces, \
 javax.crypto.spec, \
 javax.imageio, \
 javax.imageio.event, \
 javax.imageio.metadata, \
 javax.imageio.plugins.bmp, \
 javax.imageio.plugins.jpeg, \
 javax.imageio.spi, \
 javax.imageio.stream, \
 javax.jws, \
 javax.jws.soap, \
 javax.lang.model, \
 javax.lang.model.element, \
 javax.lang.model.type, \
 javax.lang.model.util, \
 javax.management, \
 javax.management.loading, \
 javax.management.modelmbean, \
 javax.management.monitor, \
 javax.management.openmbean, \
 javax.management.relation, \
 javax.management.remote, \
 javax.management.remote.rmi, \
 javax.management.timer, \
 javax.naming, \
 javax.naming.directory, \
 javax.naming.event, \
 javax.naming.ldap, \
 javax.naming.spi, \
 javax.net, \
 javax.net.ssl, \
 javax.print, \
 javax.print.attribute, \
 javax.print.attribute.standard, \
 javax.print.event, \
 javax.rmi, \
 javax.rmi.CORBA, \
 javax.rmi.ssl, \
 javax.script, \
 javax.security.auth, \
 javax.security.auth.callback, \
 javax.security.auth.kerberos, \
 javax.security.auth.login, \
 javax.security.auth.spi, \
 javax.security.auth.x500, \
 javax.security.cert, \
 javax.security.sasl, \
 javax.sound.midi, \
 javax.sound.midi.spi, \
 javax.sound.sampled, \
 javax.sound.sampled.spi, \
 javax.sql, \
 javax.sql.rowset, \
 javax.sql.rowset.serial, \
 javax.sql.rowset.spi, \
 javax.swing, \
 javax.swing.border, \
 javax.swing.colorchooser, \
 javax.swing.event, \
 javax.swing.filechooser, \
 javax.swing.plaf, \
 javax.swing.plaf.basic, \
 javax.swing.plaf.metal, \
 javax.swing.plaf.multi, \
 javax.swing.plaf.synth, \
 javax.swing.table, \
 javax.swing.text, \
 javax.swing.text.html, \
 javax.swing.text.html.parser, \
 javax.swing.text.rtf, \
 javax.swing.tree, \
 javax.swing.undo, \
 javax.tools, \
 javax.transaction; javax.transaction.xa; partial=true; mandatory:=partial, \
 javax.xml, \
 javax.xml.bind, \
 javax.xml.bind.annotation, \
 javax.xml.bind.annotation.adapters, \
 javax.xml.bind.attachment, \
 javax.xml.bind.helpers, \
 javax.xml.bind.util, \
 javax.xml.crypto, \
 javax.xml.crypto.dom, \
 javax.xml.crypto.dsig, \
 javax.xml.crypto.dsig.dom, \
 javax.xml.crypto.dsig.keyinfo, \
 javax.xml.crypto.dsig.spec, \
 javax.xml.datatype, \
 javax.xml.namespace, \
 javax.xml.parsers, \
 javax.xml.soap, \
 javax.xml.stream, \
 javax.xml.stream.events, \
 javax.xml.stream.util, \
 javax.xml.transform, \
 javax.xml.transform.dom, \
 javax.xml.transform.sax, \
 javax.xml.transform.stax, \
 javax.xml.transform.stream, \
 javax.xml.validation, \
 javax.xml.ws, \
 javax.xml.ws.handler, \
 javax.xml.ws.handler.soap, \
 javax.xml.ws.http, \
 javax.xml.ws.soap, \
 javax.xml.ws.spi, \
 javax.xml.ws.wsaddressing, \
 javax.xml.xpath, \
 org.ietf.jgss, \
 org.omg.CORBA, \
 org.omg.CORBA_2_3, \
 org.omg.CORBA_2_3.portable, \
 org.omg.CORBA.DynAnyPackage, \
 org.omg.CORBA.ORBPackage, \
 org.omg.CORBA.portable, \
 org.omg.CORBA.TypeCodePackage, \
 org.omg.CosNaming, \
 org.omg.CosNaming.NamingContextExtPackage, \
 org.omg.CosNaming.NamingContextPackage, \
 org.omg.Dynamic, \
 org.omg.DynamicAny, \
 org.omg.DynamicAny.DynAnyFactoryPackage, \
 org.omg.DynamicAny.DynAnyPackage, \
 org.omg.IOP, \
 org.omg.IOP.CodecFactoryPackage, \
 org.omg.IOP.CodecPackage, \
 org.omg.Messaging, \
 org.omg.PortableInterceptor, \
 org.omg.PortableInterceptor.ORBInitInfoPackage, \
 org.omg.PortableServer, \
 org.omg.PortableServer.CurrentPackage, \
 org.omg.PortableServer.POAManagerPackage, \
 org.omg.PortableServer.POAPackage, \
 org.omg.PortableServer.portable, \
 org.omg.PortableServer.ServantLocatorPackage, \
 org.omg.SendingContext, \
 org.omg.stub.java.rmi, \
 org.omg.stub.javax.management.remote.rmi, \
 org.w3c.dom, \
 org.w3c.dom.bootstrap, \
 org.w3c.dom.css, \
 org.w3c.dom.events, \
 org.w3c.dom.html, \
 org.w3c.dom.ls, \
 org.w3c.dom.ranges, \
 org.w3c.dom.stylesheets, \
 org.w3c.dom.traversal, \
 org.w3c.dom.views, \
 org.w3c.dom.xpath, \
 org.xml.sax, \
 org.xml.sax.ext, \
 org.xml.sax.helpers

For instance, if we deploy the Apache Geronimo Specs bundle providing the javax.xml.stream package, we have to comment
the javax.xml.stream package in the the jre-1.6 definition. Indeed, jre-1.5 doesn't provide javax.xml.stream, it's
new in the JRE 1.6:

jre-1.6= \
[...]
# javax.xml.stream, \
# javax.xml.stream.events, \
# javax.xml.stream.util, \
[...]