JAXBを使用して処理される2つのスキーマがあります。最初のスキーマは前処理され、この情報はエピソードファイル( http://www.java.net/blog/2006/09/05/separate-compilation-jaxb-ri-21に続く)を使用して使用されます。2番目のスキーマは最初のスキーマをインポートし、再びjaxbを使用して処理されます。これはすべて期待どおりに機能します。
しかし今、私は最初のスキーマに要素を持っています。これは、参照を使用して2番目のスキーマで使用されます。
スキーマa:
<schema elementFormDefault="qualified" xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:test="http://www.example.org/Test/"
targetNamespace="http://www.example.org/Test/">
<element name="type" type="test:MyType"></element>
スキーマb:
<schema elementFormDefault="qualified"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:second="http://www.example.org/Second/"
xmlns:test="http://www.example.org/Test/"
targetNamespace="http://www.example.org/Second/">
<import namespace="http://www.example.org/Test/" />
<complexType name="SomeType">
<sequence>
<element ref="test:type" minOccurs="1" maxOccurs="unbounded" />
</sequence>
</complexType>
処理中は何も問題はありませんが、両方のスキーマに対して生成されたコードは同じメソッドを提供します。
public JAXBElement<EventType> createType(TypeType value)
実行時に、これにより次のエラーが発生します。
com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 counts of
IllegalAnnotationExceptions
The element name {http://www.example.org/Type/}type has more than one mapping.
JAXBが重複するcreateTypeメソッドを作成しないようにするにはどうすればよいですか?
前もって感謝します!
更新:JAXBメーリングリストでこれと同じ質問をしました。そのリストに実際の例も投稿しました。スレッドと例は次の場所にあります:http://java.net/projects/jaxb/lists/users/archive/2011-03/message/18
このリストでは、回避策が提案されており、スキーマを好きなように使用できるようになりました。ただし、JAXBは、エピソードファイルにすでに存在しているはずなので、追加の「create」メソッドを作成するべきではないと思います。