要用jpmml解析pmml模型,需要依赖特定的JAXB provider,其中一个可用的是 EclipseLink MOXy (maven依赖为org.eclipse.persistence.moxy,org.eclipse.persistence.core 或者eclipselink)。
而要指定JAXB的provider有两种方式:
+ 纯spi的方式,也就是在META-INF/services目录下放一个文件名为javax.xml.bind.context.factory,内容为org.eclipse.persistence.jaxb.JAXBContextFactory的文件
+ 如文章blog.bdoughan.com/2011/05/specifying-eclipselink-moxy-as-your.html所述,在和模型类同级的目录里放一个,jaxb.properties文件,内容为javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory。对于像jpmml这种是在第三方包里定义的模型类,只能在自己的工程中间一个同路径的目录了。
往往一个工程了可能依赖的了多种jaxb的provider,并且有些provider很变态,会在自己的jar里也放一个META-INF/services/javax.xml.bind.context.factory文件,导致第一种方法不一定起作用。所以第二种方法兼容性更好。