首先需要运行 需要添加jar包
cxf-2.2.7.jar
geronimo-jaxws_2.1_spec-1.0.jar
jaxb-impl-2.1.12.jar
jetty-6.1.21.jar
jetty-util-6.1.21.jar
jsr311-api-1.0.jar
wsdl4j-1.6.2.jar
wstx-asl-3.2.9.jar
XmlSchema-1.4.5.jar
在jdk1.6中 运行出现异常
Exception in thread "main" java.lang.LinkageError: JAXB 2.0 API is being loaded from the bootstrap classloader, but this RI (from jar:file:/F:/newItem14/cxfFirst/WebRoot/WEB-INF/lib/jaxb-impl-2.1.12.jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class) needs 2.1 API. Use the endorsed directory mechanism to place jaxb-api.jar in the bootstrap classloader. (See http://java.sun.com/j2se/1.5.0/docs/guide/standards/)
解决方法
在运行jdk 目录下的jre/lib 新增一个文件夹 endorsed 如果有就不要增加了
将 jaxb-api-2.1.jar拷贝到该目录下即可
出现 xmlstream等异常
Provider com.bea.xml.stream.MXParserFactory not found
javax.xml.stream.FactoryConfigurationError: Provider com.bea.xml.stream.MXParserFactory not found
类路径中的包没有StAX 接口的实现,拷贝包:
wstx-asl-3.2.0.jar,stax-api-1.0.1.jar,
问题解决。
其中jsr173_api-1.0.jar和stax-api-1.0.1.jar,内容相同~
在myeclipse创建项目 客户端去调用时抛出异常 其实就是读取wsdl描述文件出现问题
解决方法 设置两个属性(javax.xml.parsers.DocumentBuilderFactory,javax.xml.parsers.SAXParserFactory)值如下:
System.setProperty("javax.xml.parsers.DocumentBuilderFactory",
"com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl");
System.setProperty("javax.xml.parsers.SAXParserFactory",
"com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl");
再运行就没有错了.
最后发现原因是我使用MyEclipse创建项目时引用了J2EE 1.4 Library Container库(JAVA构建路径-->库)
使得sun.boot.class.path增加了myelipse下的jar文件,然后就把javax.xml.parsers.DocumentBuilderFactory变量的值设为org.apache.xerces.jaxp.DocumentBuilderFactoryImpl
运行时出现 Could not find wsdl:binding operation info for web method
问题就出在你实例化一个对象转换为接口时
比如 UserService us = (UserService) factory.create();
原因是UserService 没有加上 @WebService
在客户端的接口上加上@WebService