prev | table of contents | next |
As we have seen, earlier in this chapter, an object of the class
JAXBContext
must be constructed as a starting point
for other operations. One way is to create a context from a colon
separated list of packages.
JAXBContext ctxt = JAXBContext.newInstance( "some foo:more.bar" );Each package must contain its own class
ObjectFactory
or
a file named jaxb.index
. An ObjectFactory
class is generated by the XML schema compiler, and therefore this
form of newInstance
is usually used in connection with
schema derived classes. For JAXB annotated Java code, you may use
the package path form as well, either with a hand-written
ObjectFactory
class or with a jaxb.index
resource file containing a list of the class names to be considered
by JAXB. This file simply lists the class names relative to the
package where it occurs, e.g.:
# package some.foo # class some.foo.Foo Foo # inner class some.foo.Foo.Boo Foo.Boo
An alternative form of the newInstance
method lists all
classes that the new context should recognize.
JAXBContext ctxt = JAXBContext.newInstance( Foo.class, Bar.class );Usually, the top level classes are sufficient since JAXB will follow, recursively, all static references, such as the types of instance variables. Subclasses, however, are not included. (But see the section Class Inclusion:
XmlSeeAlso
about the annotation XmlSeeAlso
, which provides a
way of extending the closure of recognized classes.)
If packages or classes are associated with namespaces, the packages or classes associated with a JAXB context also determine the namespace declarations written as attributes into the top-level element of the generated XML document.
prev | table of contents | next |