title: Options for JAXB 2.1 Bindings Customization
body: <p>I am working on generating Java objects from an XSD file using JAXB 2.1.  The XSD file has several elements in it representing business model entities, with common names like Account, etc.  The system which is using the generated files to unmarshal the XML has several conflicting class names in its domain model.  Though we can use different package names to get around class name conflicts, I think it will be more readable/maintainable to have objects of different names.  </p>
  
  <p>Because of this, I'd like to alter the XJC compilation so that is produces objects like:  DataTransferAccount.java, etc. instead of Account.java.  Super, I'll use one of the two options JAXB provides when binding a schema (<a href="http://java.sun.com/webservices/docs/2.0/tutorial/doc/JAXBUsing4.html" rel="nofollow noreferrer">http://java.sun.com/webservices/docs/2.0/tutorial/doc/JAXBUsing4.html</a>):</p>
  
  <ol>
  <li>Inline Customizations - Annotate the XSD itself using the jaxb namespace to specify class names</li>
  <li>External Bindings File - Provide an extra file to the XJC which has rules on how to map schema elements to java classes</li>
  </ol>
  
  <p>Is there a good argument for using option 1, aside from the ease of use?  Naively, I'm tempted to use it because it is easy, but down the road I can see maintenance headaches if we decide to move away from JAXB XML unmarshalling.</p>