JiBX/OTA: OTA Message Exchange with JiBX

### What is JiBX/OTA?

JiBX/OTA is a set of examples and sample code intended to help developers working with the Open Travel Alliance schemas. It includes two different examples of JiBX code generation from the OTA schemas, an example of WSDL generation from a Java interface for a web service based on OTA messages, and two different sample implementations of a client and server for the web service.

JiBX offers a number of advantages over alternative data binding frameworks for working with the OTA schemas. For starters, it does a better job of handling schema definitions:

- <xs:documentation> items in schema definitions are converted to JavaDocs, making relevant documentation directly available to developers
- <xs:choice> components are converted to type-safe representations with (optionally) checked get/set methods to prevent usage errors
- Repeated components in the schema definition, including repeated <xs:choice> components, are represented with type-safe arrays or (for Java 5 and above) typed lists
- Unused common definitions are ignored, and definitions used only in one place are inlined, where possible, avoiding the creation of unnecessary added classes

JiBX also provides much greater flexibility than other alternatives, including easy ways to:

- Selectively generate only the schema components required for specific messages
- Simplify schema definitions by deleting components not needed for your application (without any modification to the actual schemas)
- Use the popular Joda date/time types for better representations of schema data/time types
- Substitute one schema type for another, allowing the use of simpler Java equivalents (such as `int` or `long` in place of `java.math.BigInteger`
- Extend the code generation with supplied decorators for purposes such as adding `java.io.Serializable` handling to generated classes (or with your own custom decorators)
- Choose between Java 5 typed lists and arrays or untyped lists, and between Java 5 enums and custom enumeration types, for compatibility with older JVMs
- Build modular representations, so that development teams can control the portions of the data model relevant to their own work without effecting other teams

On the web services side, JiBX gives the best support for generating WSDL service definitions from code (even if you're not actually using JiBX at runtime). When used with the JiBX/WS web services framework JiBX also provides the fastest web services available, including support for XBIS encoding which doubles your speed in converting to and from XML while cutting data volumes in half. JiBX/WS also gives the flexibility of using direct XML document exchanges (without SOAP wrappers), and efficient TCP socket transport (both with and without SOAP).

Module Name | Primary Developer | Status
--- | --- | ---
jibx-ota (svn) | Dennis Sosnoski | 1.0 release February 14, 2010