`

WebServices CXF开发常见异常及解决方法

 
阅读更多
========== 异常1===

2011-7-14 9:55:15 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
信息: Creating Service {http://services.ws.com/}IHelloServicesService from class com.ws.services.IHelloServices
Exception in thread "main" javax.xml.parsers.FactoryConfigurationError: Provider org.apache.xerces.jaxp.DocumentBuilderFactoryImpl not found
at javax.xml.parsers.DocumentBuilderFactory.newInstance(Unknown Source)
at org.apache.cxf.helpers.XMLUtils.getDocumentBuilderFactory(XMLUtils.java:109)
at org.apache.cxf.helpers.XMLUtils.getParser(XMLUtils.java:133)
at org.apache.cxf.helpers.XMLUtils.parse(XMLUtils.java:151)
at org.apache.cxf.jaxb.JAXBDataBinding.<clinit>(JAXBDataBinding.java:111)
at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.createDefaultDataBinding(ReflectionServiceFactoryBean.java:214)
at org.apache.cxf.service.factory.AbstractServiceFactoryBean.getDataBinding(AbstractServiceFactoryBean.java:109)
at org.apache.cxf.service.factory.AbstractServiceFactoryBean.getDataBinding(AbstractServiceFactoryBean.java:105)
at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.generatedWrapperBeanClass(JaxWsServiceFactoryBean.java:654)
at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.getExtraClass(JaxWsServiceFactoryBean.java:630)
at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromClass(ReflectionServiceFactoryBean.java:432)
at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.buildServiceFromClass(JaxWsServiceFactoryBean.java:682)
at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:501)
at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:241)
at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:202)
at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:101)
at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:157)
at org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:202)
at com.test.ServerTest.<init>(ServerTest.java:19)
at com.test.ServerTest.main(ServerTest.java:23)


缺少xercesImpl.jar

======== =================异常2============== ====
2011-7-14 10:10:59 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
信息: Creating Service {http://services.ws.com/}IHelloServicesService from class com.ws.services.IHelloServices
Exception in thread "main" java.lang.LinkageError: JAXB 2.1 API is being loaded from the bootstrap classloader, but this RI (from jar:file:/E:/Project/workspace/CxfServices/libs/jaxb-impl-2.2.1.1.jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class) needs 2.2 API. Use the endorsed directory mechanism to place jaxb-api.jar in the bootstrap classloader. (Seehttp://java.sun.com/j2se/1.6.0/docs/guide/standards/)
at com.sun.xml.bind.v2.model.impl.ModelBuilder.<clinit>(ModelBuilder.java:173)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:456)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:302)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1140)
at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:154)
at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:121)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:210)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:368)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:574)
at org.apache.cxf.jaxb.JAXBContextCache.createContext(JAXBContextCache.java:258)
at org.apache.cxf.jaxb.JAXBContextCache.getCachedContextAndSchemas(JAXBContextCache.java:167)
at org.apache.cxf.jaxb.JAXBDataBinding.createJAXBContextAndSchemas(JAXBDataBinding.java:418)
at org.apache.cxf.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:290)
at org.apache.cxf.service.factory.AbstractServiceFactoryBean.initializeDataBindings(AbstractServiceFactoryBean.java:86)
at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromClass(ReflectionServiceFactoryBean.java:438)
at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.buildServiceFromClass(JaxWsServiceFactoryBean.java:682)
at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:501)
at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:241)
at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:202)
at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:101)
at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:157)
at org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:202)
at com.test.ServerTest.<init>(ServerTest.java:19)
at com.test.ServerTest.main(ServerTest.java:23)

原因:jdk1.6.0_02中的jaxws-api-2.0.jar及jaxb-api-2.0.jar,而cxf需要jaxws-api-2.1.jar及jaxb-api-2.1.jar的支持。
解决方法:1、将cxf所需的2.1的jar复制一份到jdk目录下的jre\lib\endorsed文件夹中。如果endorsed文件不存在,可新建。
          2、jdk升级到1.6.0_22版本以上。


========= ===========异常3===== ====

2011-7-14 10:25:40 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
信息: Creating Service {http://services.ws.com/}IHelloServicesService from class com.ws.services.IHelloServices
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/jetty/server/Connector
at org.apache.cxf.transport.http_jetty.JettyHTTPServerEngineFactory.createJettyHTTPServerEngine(JettyHTTPServerEngineFactory.java:237)
at org.apache.cxf.transport.http_jetty.JettyHTTPDestination.retrieveEngine(JettyHTTPDestination.java:113)
at org.apache.cxf.transport.http_jetty.JettyHTTPDestination.finalizeConfig(JettyHTTPDestination.java:146)
at org.apache.cxf.transport.http.HTTPTransportFactory.getDestination(HTTPTransportFactory.java:278)
at org.apache.cxf.binding.soap.SoapTransportFactory.getDestination(SoapTransportFactory.java:134)
at org.apache.cxf.endpoint.ServerImpl.initDestination(ServerImpl.java:92)
at org.apache.cxf.endpoint.ServerImpl.<init>(ServerImpl.java:71)
at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:158)
at org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:202)
at com.test.ServerTest.<init>(ServerTest.java:19)
at com.test.ServerTest.main(ServerTest.java:23)

缺少jar包:jetty-server-7.4.2.v20110526.jar

======== ============异常4========== ===

2011-7-14 10:31:02 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
信息: Creating Service {http://services.ws.com/}IHelloServicesService from class com.ws.services.IHelloServices
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/jetty/http/HttpBuffers
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at org.apache.cxf.transport.http_jetty.JettyHTTPServerEngine.getHTTPConnectorFactory(JettyHTTPServerEngine.java:620)
at org.apache.cxf.transport.http_jetty.JettyHTTPServerEngine.retrieveListenerFactory(JettyHTTPServerEngine.java:609)
at org.apache.cxf.transport.http_jetty.JettyHTTPServerEngine.finalizeConfig(JettyHTTPServerEngine.java:659)
at org.apache.cxf.transport.http_jetty.JettyHTTPServerEngineFactory.createJettyHTTPServerEngine(JettyHTTPServerEngineFactory.java:239)
at org.apache.cxf.transport.http_jetty.JettyHTTPDestination.retrieveEngine(JettyHTTPDestination.java:113)
at org.apache.cxf.transport.http_jetty.JettyHTTPDestination.finalizeConfig(JettyHTTPDestination.java:146)
at org.apache.cxf.transport.http.HTTPTransportFactory.getDestination(HTTPTransportFactory.java:278)
at org.apache.cxf.binding.soap.SoapTransportFactory.getDestination(SoapTransportFactory.java:134)
at org.apache.cxf.endpoint.ServerImpl.initDestination(ServerImpl.java:92)
at org.apache.cxf.endpoint.ServerImpl.<init>(ServerImpl.java:71)
at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:158)
at org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:202)
at com.test.ServerTest.<init>(ServerTest.java:19)
at com.test.ServerTest.main(ServerTest.java:23)

缺少jetty-http-7.4.2.v20110526.jar


======================================================异常5=================================================================

Caused by: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 2 counts of IllegalAnnotationExceptions
java.util.Map is an interface, and JAXB can't handle interfaces.
        this problem is related to the following location:
                at java.util.Map
                at private java.util.Map com.cecltd.service.jaxws_asm.SayHi.arg0
                at com.cecltd.service.jaxws_asm.SayHi
java.util.Map does not have a no-arg default constructor.         this problem is related to the following location:
                at java.util.Map
                at private java.util.Map com.cecltd.service.jaxws_asm.SayHi.arg0
                at com.cecltd.service.jaxws_asm.SayHi
解决方法:将服务端的services接口返回的Map类型的值,改成HashMap.
结论:在做webServices复杂类型值传递时,返回值的类型不要用接口类型。例如(List应该改为ArrayList,Map改为HashMap等)
分享到:
评论

相关推荐

    非常详细的cxf开发学习教程集合

    这包括WSDL(Web Services Description Language)的第一步,定义服务接口和数据类型,然后使用CXF工具生成服务实现和客户端代码。 4. **RESTful服务**:随着REST风格的流行,掌握如何用CXF构建RESTful API至关重要...

    java调用exchange web services

    Java调用Exchange Web Services(EWS)是一种常见的技术实践,用于与Microsoft Exchange Server进行交互,进行邮件发送、日历管理、联系人同步等任务。EWS是Exchange Server提供的一组基于SOAP协议的Web服务接口,...

    webservices调用所需的包

    2. ** Axis2** 或 **Apache CXF**:这两个是流行的Java Web服务框架,它们提供了基于JAXRPC和SAAJ的实现,并且支持WSDL-first或Java-first的开发模式,简化了Web服务的创建和调用。 3. **SOAP消息结构**:理解SOAP...

    web service的资料

    7. **故障排查和最佳实践**:提供常见问题的解决方案,以及优化Web服务性能和设计的最佳实践建议。 通过深入学习这份资料,你将能够全面了解和掌握Java领域的Web服务实现,无论是Axis还是XFire,都将为你在分布式...

    stub开发webservice

    Java提供了多种开发WebService的框架,如JAX-WS(Java API for XML Web Services)和Apache CXF。 ### 一、JAX-WS简介 JAX-WS是Java平台上的标准API,用于创建和消费Web服务。它简化了WebService的开发,通过注解...

    webservice 实现政府采购源码

    在IT行业中,Web服务是应用程序之间进行通信的一种标准方法,而WebService是一种基于XML(Extensible Markup Language)的开放式协议,允许不同系统之间的数据交换。在这个名为"WebService实现政府采购源码"的项目中...

    Java,XML和Web服务宝典

    在Java中,使用JAX-WS(Java API for XML Web Services)或CXF框架可以创建和消费SOAP Web服务。对于RESTful服务,JAX-RS(Java API for RESTful Web Services)标准提供了接口定义,Jersey和RESTEasy是常见的实现库...

    web service 源碼(包括服務網端代碼)

    常见的服务端实现框架有Apache CXF、Glassfish JAX-WS等。 6. **编码和服务实现**:在服务端,你需要定义一个Java类,该类的方法对应Web服务的接口。JAX-WS提供注解(如`@WebService`、`@WebMethod`等)来标记服务...

    java webService

    在Java调用Web Service时,常见的问题包括版本兼容性、数据类型转换、异常处理等。要解决这些问题,开发者需要深入理解SOAP消息结构、WSDL规范以及XML Schema。 标签“webService java调用webService”表明这个...

    动态调用WebService例子 文档

    2. **JAX-WS与JAX-RS**:在Java世界中,JAX-WS(Java API for XML Web Services)用于创建和消费SOAP Web服务,而JAX-RS(Java API for RESTful Web Services)则用于处理RESTful Web服务。动态调用时,开发者可以...

    增加对Web服务的引用.rar

    SOAP是基于WSDL(Web Services Description Language)的,主要用于企业级应用,而RESTful API则更轻量级,常用于Web应用程序。XML-RPC是早期的远程调用协议,现在相对较少使用。 **添加Web服务引用的步骤:** 1. ...

    soap/Web Service客户端

    2. **WSDL(Web Services Description Language)**:WSDL是一个XML格式的规范,用于描述Web服务的接口、操作、地址和绑定。客户端通过WSDL文档理解如何与服务进行交互。 3. **UDDI(Universal Description, ...

    java 调用webservice(sp)

    Java调用WebService(SP,Service Provider)是一种常见的企业级应用集成技术,允许Java应用程序与远程Web服务进行交互。本篇文章将深入探讨Java如何调用WebService,包括基础概念、使用的技术栈以及具体的实现步骤...

    C#调用java的webservice源代码

    在Java中,通常使用JAX-WS(Java API for XML Web Services)或者Apache CXF等框架来创建Web Service。开发者定义一个Java接口或抽象类,然后使用注解如`@WebService`来标记这个接口,并通过实现这个接口来提供服务...

    java_调用Webservice接口

    在Java开发中,调用Web服务接口是一项常见的任务,特别是在跨平台应用程序集成和企业级服务之间进行通信时。Web服务,特别是基于SOAP的Web服务,提供了一种标准化的方式来交换数据和服务。本文将探讨Java调用Web服务...

    Java使用XFire调用WebService接口.docx

    此外,随着技术的发展,XFire 已经被 Apache CXF 所取代,虽然本文是关于 XFire 的,但现代的 Java 开发更倾向于使用 CXF 或其他支持 JAX-WS 和 JAX-RS 的框架,如 RESTEasy 或 Jersey,来创建和消费 WebService。...

    动态调用webservice与复杂对象的序列化

    在IT行业中,Web服务是应用程序之间进行通信的一种标准方法,而动态调用Web服务和复杂对象的序列化、反序列化是开发过程中常见的技术环节。本文将深入探讨这两个主题。 首先,让我们理解什么是动态调用Web服务。Web...

    WebService测试方案.docx

    常见的WebService框架有Axis、Xfire和CXF等,它们提供了发布和调用WebService的实现。 **1. WebService工作原理** 在WebService的工作流程中,服务端首先生成WSDL文件,这个文件包含了服务的接口定义、方法、参数...

    为Android 创建一个 JAX-RS 客户端 代码示例

    在Android平台上,开发人员经常需要与远程Web服务进行交互,以获取或发送数据。JAX-RS(Java API for RESTful Web Services)是Java中用于创建RESTful服务的标准,而Android客户端可以使用HttpClient库来访问这些...

    Java访问WebService返回XML数据的方法

    Java访问WebService返回XML数据的方法是Java开发者在与Web服务交互时常见的需求,特别是当Web服务以XML格式提供数据时。本篇文章将详细讲解如何通过Java实现这一过程,并介绍相关的技术点。 首先,为了访问...

Global site tag (gtag.js) - Google Analytics