我有以下情况:JAXB xsd:包含并单独包
有2个xsd文件。第一个定义了一个根元素和几种类型。
第二个包含第一个,并扩展其中的一个类型。 在这个文件中没有定义根类型。
从第一个xsd开始,在包(a)中生成一个模型。 第二个模式应为其他 类型创建新包(b),但重用生成的包a。我通过使用指向先前生成的元素的 绑定文件(在 软件包a中)解决了这个问题。 到目前为止,这工作,但..
JAXB在包A中生成一个ObjectFactory,其中包含一个创建 方法的根元素。 对于第二个模式,还在包B中创建了一个ObjectFactory。 而且此类也具有相同根元素的create方法。
为了能够使用所有类型,使用 多个对象工厂(newInstance(a.ObjectFactory.class, b.ObjectFactory.class)
)创建jaxb上下文。
在运行时,这会导致以下错误:
com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 2 counts of IllegalAnnotationExceptions The element name {http://www.example.org/Scenario/}scenario has more than one mapping
我应该产生不同的包?或者有什么 可能使用绑定文件来防止对象工厂从 有重复的方法?
感谢您的回复。我已经改变它使用导入,而不是包含,确实似乎更好。我会看看博客文章,看起来很有希望。 – Alexander 2010-11-25 13:49:34