

h1. 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}}:

{code}
#
# 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
{code}

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:

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