J'ai la situation suivante :
Il y a 2 fichiers xsd. Le premier définit un élément racine, et plusieurs types.
Le deuxième inclut le premier, et étend un des types. Il n'y a pas de type racine défini dans ce fichier.
À partir du premier xsd, un modèle est généré dans un package (a). Le deuxième schéma devrait créer un nouveau package (b) pour les types supplémentaires, mais réutiliser le package généré a. J'ai résolu cela en utilisant un fichier de liaison qui pointe vers les éléments précédemment générés (dans le package a). Jusqu'à présent, cela fonctionne, mais...
JAXB génère un ObjectFactory dans le package A, contenant une méthode create pour l'élément racine. Pour le deuxième schéma, un ObjectFactory est également créé dans le package B. Et cette classe a également la méthode create pour le même élément racine.
Pour pouvoir utiliser tous les types, le contexte jaxb est créé en utilisant plusieurs factories d'objets (newInstance(a.ObjectFactory.class, b.ObjectFactory.class)
).
À l'exécution, cela se traduit par l'erreur suivante :
com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 2 violations de IllegalAnnotationExceptions Le nom de l'élément {http://www.example.org/Scenario/}scenario a plus d'un mappage
Dois-je générer les packages différemment ? Ou est-il possible d'utiliser le fichier de liaison pour empêcher l'object factory d'avoir des méthodes en double ?