选择web service spi provider

WAS8自带了axis2的web service实现,但有一个项目war包中自带cxf,在实际部署中也但愿使用cxf,java

却发现用的是axis2的jar包,所以,须要将spi指成cxf,查了一下google,找到一些相关的办法:web

Apache CXF (cxf-rt-frontend-jaxws-*.jar to be precise) registers itself as a JAX-WS provider in the JVM. Inside the aforementioned JAR there is a file named: /META-INF/services/javax.xml.ws.spi.Provider with the following contents:apache

org.apache.cxf.jaxws.spi.ProviderImpl

If you now look at javax.xml.ws.spi.FactoryFinder#find method you will discover that JDK searches the CLASSPATH for the presence of javax.xml.ws.spi.Provider file and falls back to default Sun implementation if not available. So you have two options to force fallback:frontend

  • either remove cxf-rt-frontend-jaxws-*.jar from CLASSPATHide

  • or override javax.xml.ws.spi.Provider file provided by CXF to point to fallback locationgoogle

The second option is actually a bit easier. Simply create:code

/src/main/resources/META-INF/services/javax.xml.ws.spi.Provider

file (assuming you are using Maven) with the following contents:xml

org.apache.cxf.jaxws.spi.ProviderImpl

That's it, tested with javax.xml.ws.Endpoint#publishci

相关文章
相关标签/搜索