Use the Java Architecture for XML Binding
(JAXB) tools to generate Java classes
from an XML schema with the xjc schema compiler tool.
JAXB is an XML-to-Java binding technology that enables transformation
between schema and Java objects and between XML instance
documents and Java object instances. JAXB technology
consists of a runtime API and accompanying tools that simplify access
to XML documents. You can use JAXB APIs and tools to establish mappings
between Java classes and XML schema. An
XML schema defines the data elements and structure of an XML document.
JAXB technology provides a runtime environment to enable you to convert
your XML documents to and from Java objects.
Data stored in an XML document is accessible without the need to understand
the XML data structure.
You can generate fully annotated Java classes
from an XML schema file by using the JAXB schema compiler, xjc command-line
tool. Use the xjc schema compiler tool to start
with an XML schema definition (XSD) to create a set of JavaBeans that map to the elements and
types defined in the XSD schema. Once the mapping between XML schema
and Java classes exists, XML instance documents
can be converted to and from Java objects
through the use of the JAXB binding runtime API. The resulting annotated
Java classes contains all the necessary information that the JAXB
runtime requires to parse the XML for marshaling and unmarshaling.
You can use the resulting JAXB classes within Java API
for XML Web Services (JAX-WS) applications or in your non-JAX-WS Java applications for processing XML data.
Supported configurations: The wsimport, wsgen, schemagen and xjc command-line tools are not supported on the z/OS® platform. This functionality is provided
by the assembly tools provided with WebSphere® Application Server running on
the z/OS platform. Read about
these command-line tools for JAX-WS applications to learn more about
these tools.sptcfg
Best practice: WebSphere Application Server provides Java API for XML-Based Web Services
(JAX-WS) and Java Architecture
for XML Binding (JAXB) tooling. The wsimport, wsgen, schemagen and xjc command-line tools are located in the app_server_root\bin\ directory in full profile. The wsimport and wsgen commands are located
in the app_server_root\jaxws\bin\ directory in
Liberty profile. The xjc and schemagen commands are located in the app_server_root\jaxb\bin\
directory in Liberty profile. Similar tooling is provided by
the Java SE Development Kit
(JDK) 6. On some occasions, the artifacts generated by both the tooling
provided by WebSphere Application
Server and the JDK support the same levels of the specifications.
In general, the artifacts generated by the JDK tools are portable
across other compliant runtime environments. However, it is a best
practice to use the tools provided with this product to achieve seamless
integration within the WebSphere Application Server environment and to take advantage of the features
that may be only supported in WebSphere Application Server. To take advantage of JAX-WS and
JAXB V2.2 tooling, use the tools provided with the application server
that are located in the app_server_root\bin\ directory.bprac
In addition to using the xjc tool from the command
line, you can invoke this JAXB tool from within the Ant build environments.
Use the com.sun.tools.xjc.XJCTask Ant task
from within the Ant build environment to invoke the xjc schema
compiler tool. To function properly, this Ant task requires that you
invoke Ant using the ws_ant script.
Avoid trouble: If you are using the
xjc Ant
task, you must use the
destdir parameter to specify
the destination directory instead of the
target option.
Specifying the
target option when using the
xjc Ant
task causes an error.
gotcha
Syntax
The command-line syntax is:
app_server_root/bin/xjc [options] <schema_file/URL/directory_or_jar> ...[-b<binding_information>] ...
If
a directory is specified, all schema files in the directory are compiled.
Parameters
The schema file/URL JAR
file name or location of the directory is the only parameter that
is required. The following parameters are optional for the xjc command:
- -b <file_name or directory>
- Specifies the external JAX-WS or JAXB binding files. You can specify
multiple JAX-WS and JAXB binding files by using the -b option;
however, each file must be specified with its own -b option.
If a directory is specified, **/*.xjb is searched.
- -catalog <file_name>
- Specifies the catalog file to resolve external entity references.
It supports the TR9401, XCatalog, and the OASIS XML Catalog formats.
- -classpath <path>
- Specifies the location of the class files.
- -d <directory>
- Specifies where to place the generated output files.
- -dtd
- Specifies to treat the input as XML Document Type Definition (DTD).
This option is unsupported and experimental.
- -extension
- Specifies whether to enable custom extensions for functionality
not specified by the JAXB specification. Use of the extensions can
result in applications that are not portable or do not interoperate
with other implementations.
- -help
- Displays the help menu.
- -httpproxy <[user[:password]@]<proxyhost>:<proxyport>>
- Specifies an HTTP or HTTPs proxy.
- -httpproxyfile <file_name>
- This parameter is similar to the -httpproxy parameter,
but takes the argument in a file to protect the password.
- -no-header
- Specifies to suppress the generation of a file header with a timestamp.
- -npa
- Specifies to suppress the generation of the **/package-info.java package
level annotation.
- -nv
- Specifies to not perform a strict validation of the input schemas.
- -p <package_name>
- Specifies a target package.
- -quiet
- Specifies to suppress the output from the xjc tool.
- -relaxng
- Specifies to treat the input as REgular LAnguage for XML Next
Generation (RELAX NG). This option is unsupported and experimental.
- -readOnly
- Specifies that the generated files are in read-only mode.
- -relaxng-compact
- Specifies to treat the input as REgular LAnguage for XML Next
Generation (RELAX NG) compact syntax. This option is unsupported and
experimental.
- -target <version>
- Specifies to generate output to conform to the specified level
of the JAX-WS specification. Specify 2.0 or 2.1 for
the tool to generate compliant code for the JAXB 2.0 or JAX-WS 2.1
specification respectively. Specify 2.1 for the
tool to generate compliant code for the JAXB 2.1 specification. The
default target version is 2.2 and generates compliant
code for the JAXB 2.2 specification.
- The target option is required for Liberty
profile.
- -verbose
- Specifies to output messages about what the compiler is doing.
- -version
- Prints the version information. If you specify this option, only
the version information is output and typical command processing does
not occur.
- -wsdl
- Specifies to treat the input as a Web Services Description Language
(WSDL) file and compile schemas inside the WSDL. This option is unsupported
and experimental.
- -xmlschema
- Specifies to treat the input as a World Wide Web Consortium (W3C)
XML schema. This value is the default.