备忘文件,有些乱
引入cxf后报错:
Caused by: java.lang.NoSuchMethodException: com.sun.xml.bind.v2.runtime.LeafBeanInfoImpl.getTypeNames()
at java.lang.Class.getMethod(Class.java:1604)
at org.apache.cxf.common.util.ReflectionInvokationHandler.invoke(ReflectionInvokationHandler.java:50)
... 63 more
有一篇文章说jdk冲突(http://blog.csdn.net/kojhliang/article/details/6291208)但是我使用myeclipse自带jdk时报其他错误;通过http://www.jarvana.com/jarvana/search?search_type=class&java_class=com.sun.xml.bind.v2.runtime.LeafBeanInfoImpl找到包含com.sun.xml.bind.v2.runtime.LeafBeanInfoImpl类的包还有个stax于是将项目中的
geronimo-stax-api_1.0_spec-1.0.1.jar删除,项目成功启动
另贴其他的一些相关错误及处理方法:
>>一个异常
org.apache.cxf.interceptor.Fault: No such operation: (HTTP GET PATH_INFO: /qxqp-web/HelloWorld)
只需要在http://localhost:8080/HelloWorld后面加上:wsdl即正常了。
>>
在SSH jdk6.0 Tomcat6.0环境中使用CXF 运行时报如下错误
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.apache.cxf.wsdl.WSDLManager' defined in URL [jar:file:/E:/workSpace/T82A/WebRoot/WEB-INF/lib/cxf/cxf-2.1.3.jar!/META-INF/cxf/cxf.fixml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.apache.cxf.wsdl11.WSDLManagerImpl]: Constructor threw exception; nested exception is java.lang.LinkageError: JAXB 2.0 API is being loaded from the bootstrap classloader, but this RI (from jar:file:/E:/workSpace/T82A/WebRoot/WEB-INF/lib/cxf/jaxb-impl-2.1.7.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/)
...
Caused by: java.lang.LinkageError: JAXB 2.0 API is being loaded from the bootstrap classloader, but this RI (from jar:file:/E:/workSpace/T82A/WebRoot/WEB-INF/lib/cxf/jaxb-impl-2.1.7.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/)
...
按照网上看说,在jdk1.6.0_05\jre\lib\下新建endorsed文件夹,放入jaxb-api.jar还是没有效果,经过我的仔细阅读E文,纠正这个错误,如果是Tomcat 5.5,则新建文件路径为“Tomcat 5.5\common\endorsed”,如果是Tomcat 6.0,则新建路径为“Tomcat 6.0\endorsed”。不是在jdk1.6.0_05\jre\lib\
对于找一个jaxb-api.jar的包(比如从netbeans目录下搜索一下),复制到endorsed目录下去.
上面的说法都不错,但在使用myeclipse工具时,注意配置你的环境,若是在jre16下,则应该放到这下面去。
>>
2011-7-12 17:05:49 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
信息: Creating Service {http://webservice.qxqpw.com/}HelloWorldService from class com.qxqpw.webservice.HelloWorld
Exception in thread "main" javax.xml.ws.WebServiceException: Could not find wsdl:binding operation info for web method sayHi.
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:113)
at $Proxy14.sayHi(Unknown Source)
at com.qxqp.test.TestWebservice.main(TestWebservice.java:12)
必须加上:@WebService
>>
服务器接口包与客户端接口包必须相同。