要用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,內(nèi)容為org.eclipse.persistence.jaxb.JAXBContextFactory的文件
+ 如文章blog.bdoughan.com/2011/05/specifying-eclipselink-moxy-as-your.html所述,在和模型類同級的目錄里放一個,jaxb.properties文件,內(nèi)容為javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory。對于像jpmml這種是在第三方包里定義的模型類,只能在自己的工程中間一個同路徑的目錄了。
往往一個工程了可能依賴的了多種jaxb的provider,并且有些provider很變態(tài),會在自己的jar里也放一個META-INF/services/javax.xml.bind.context.factory文件,導(dǎo)致第一種方法不一定起作用。所以第二種方法兼容性更好。