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开头的方法的返回值类型。
?
?
:)
?
1 楼 jzinfo 2012-03-05 JAX-WS 使用 JAXB 作为默认的绑定机制