Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "EclipseLink/UserGuide/MOXy/Runtime/Bootstrapping"
Line 15: | Line 15: | ||
* A list of one or more EclipseLink OXM Bindings Files defining the mappings for your Java classes | * A list of one or more EclipseLink OXM Bindings Files defining the mappings for your Java classes | ||
* A combination of '''Classes''' and OXM files | * A combination of '''Classes''' and OXM files | ||
− | * A '''Session''' | + | * A list of '''context paths''' |
+ | * A list of '''Session''' names, referring to EclipseLink '''Sessions''' defined in '''sessions.xml''' | ||
Revision as of 13:22, 10 June 2011
EclipseLink MOXy
EclipseLink | |
Website | |
Download | |
Community | |
Mailing List • Forums • IRC • mattermost | |
Issues | |
Open • Help Wanted • Bug Day | |
Contribute | |
Browse Source |
Key API
Contents
Bootstrapping
EclipseLink MOXy offers several options when creating your JAXBContext. You have the option of bootstrapping from:
- A list of one or more JAXB-annotated Classes
- A list of one or more EclipseLink OXM Bindings Files defining the mappings for your Java classes
- A combination of Classes and OXM files
- A list of context paths
- A list of Session names, referring to EclipseLink Sessions defined in sessions.xml
JAXBContext API
The following methods on JAXBContext are used to create new instances of JAXBContexts:
public static JAXBContext newInstance(Class... classesToBeBound) throws JAXBException public static JAXBContext newInstance(Class[] classesToBeBound, Map<String,?> properties) throws JAXBException public static JAXBContext newInstance(String contextPath) throws JAXBException public static JAXBContext newInstance(String contextPath, ClassLoader classLoader) throws JAXBException public static JAXBContext newInstance(String contextPath, ClassLoader classLoader, Map<String,?> properties) throws JAXBException
- classesToBeBound - List of Java classes to be recognized by the new JAXBContext.
- contextPath - List of Java package names that contain mapped classes.
- classLoader - The class loader used to locate the mapped classes.
- properties - A map of additional properties.
Bootstrapping from Classes
If you already have a collection of Java Classes annotated with JAXB annotations, you can provide a list of these Classes directly:
JAXBContext context = JAXBContext.newInstance(Company.class, Employee.class);
Bootstrapping from a Context Path
Another way to bootstrap your JAXBContext is with a String, called the "context path". This is a colon-delimited list of package names containing your mapped classes. Using this approach, there are a few different ways that EclipseLink will discover your model classes:
jaxb.index
The context path could contain a file named jaxb.index, which is a simple text file containing the class names from the current package that will be brought into the JAXBContext.
ObjectFactory
sessions.xml
Bootstrapping from EclipseLink OXM
If you would like to have more control over how your classes will be mapped to XML, you can instead bootstrap from an EclipseLink OXM bindings file. Using this approach, you can take advantage of EclipseLink's robust mappings framework and customize how each complex type in XML maps to its Java counterpart.
Links to the actual OXM files are passed in via the properties parameter, using a special key, JAXBContextFactory.ECLIPSELINK_OXM_XML_KEY. The value of this key will be a handle to the OXM metadata file, in the form of one of the following:
- java.io.File
- java.io.InputStream
- java.io.Reader
- java.net.URL
- javax.xml.stream.XMLEventReader
- javax.xml.stream.XMLStreamReader
- javax.xml.transform.Source
- org.w3c.dom.Node
- org.xml.sax.InputSource
When bootstrapping from OXM, the package specified by contextPath must contain a jaxb.properties file that specifies the EclipseLink JAXBContextFactory.
InputStream iStream = myClassLoader.getResourceAsStream("example/eclipselink-oxm.xml"); Map<String, Object> properties = new HashMap<String, Object>(); properties.put(JAXBContextFactory.ECLIPSELINK_OXM_XML_KEY, iStream); JAXBContext context = JAXBContext.newInstance("example", myClassLoader, properties);