jaxb的类型绑定

    今天一个同事使用jaxb将海航的wsdl里的几个schema生成marshall/unmarshall代码,但是运行的时候提示找不到类。但类是生成的,而且确实存在。

    翻了翻jaxb,这个跟xmlbeans很像的东西,绑定的类型不是直接从classpath来的。

大概的加载过程是,

1、需要通过servicelocator的方式或者jaxb.properties里,提供一个javax.xml.bind.context.factory的实现类。

2、默认的实现类是com.sun.xml.bind.v2.ContextFactory。如果在需要加载的package下,有一个叫jaxb.index的文件,则加载其中的每一个类。(每行为一个类名,不带.class。以#开头则忽略。)

3、而且每个要用的package下,需要一个ObjectFactory来负责加载需要的类。一般生成的ObjectFactory,加载的逻辑也比较诡异:加载ObjectFactory中的每一个以create开头的方法的返回值类型。

 

 

:)

 

你可能感兴趣的:(JAXB)