`
Harold_xlp
  • 浏览: 159307 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

axis 调用cxf boolean获取为null或者异常

 
阅读更多

 

将cxf发布server后,使用axis来访问发布的services,在测试的过程中,出现获取不到boolean的值,但其它的string,int等又可以获取到,开始以为是jar冲突,但在server端看日志,可以找到客户端发出了这个值,但就是无法获取到,然后得到是soapenc:boolean和xsd:boolean之间转换异常,但无法得到解决的答案,通过使用cxf client和axis client不同的方式查看server 端的日志,出现了下面不同的xml结果,判断出一个是走SOAP:ENVELOPE,一个是走SOAPENV:ENVELOPE;查找axis中的call对象的方法,call.setSOAPVersion(SOAPConstants.SOAP12_CONSTANTS);将发送的数据格式变为soap1.2协议,问题得以解决!

在不同的中间件中,可能会出现些问题,最终作法是将SUN JDK的RT.JAR包放到应用中,随着应用一起进行部署!

 

 

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns1:sayHello xmlns:ns1="http://service.cxf.cmc.cigna.com/"><name>sdfd</name><isFlag>true</isFlag></ns1:sayHello></soap:Body></soap:Envelope>

 

<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><sayHello soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><name xsi:type="xsd:string">sdfd</name><isFlag href="#id0"/></sayHello><multiRef id="id0" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="xsd:boolean" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">true</multiRef></soapenv:Body></soapenv:Envelope>

 

AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server
faultSubcode:
faultString: null while invoking public java.lang.String com.cigna.cmc.cxf.service.impl.HelloWorldImpl.sayHello(java.lang.String,boolean) with params [sdfd, null].
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:null while invoking public java.lang.String com.cigna.cmc.cxf.service.impl.HelloWorldImpl.sayHello(java.lang.String,boolean) with params [sdfd, null].
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(Unknown Source)
at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at test.TestClient.main(TestClient.java:40)

{http://xml.apache.org/axis/}hostname:harold-PC

null while invoking public java.lang.String com.cigna.cmc.cxf.service.impl.HelloWorldImpl.sayHello(java.lang.String,boolean) with params [sdfd, null].
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(Unknown Source)
at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at test.TestClient.main(TestClient.java:40)

分享到:
评论
1 楼 决战冰河 2012-09-25  
你好,我遇到一个相似的问题。soap请求包为:
<param1 xsi:type="xsd:string">Testing Mmtest</param1>
<param2 xsi:type="xsd:string">01868008835</param2>
<param3 href="#id0"/>
<multiRef id="id0" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xsi:type="xsd:long" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
3000
</multiRef>
现在cxf识别不到param3这个参数(其他参数可以正确读取),请问你遇到过吗?多谢!

相关推荐

    cxf客户端调用axis服务端流程

    本文将深入探讨如何使用CXF客户端调用Axis服务端的流程。 ### 一、了解CXF和Axis **CXF**(CXF: Composite eXtensible Framework)是一个开源的Java Web服务框架,它提供了多种方式来创建和使用Web服务,包括JAX-...

    myService_purpose1sv_cxf调用axis2的接口服务_接口服务_

    标题“myService_purpose1sv_cxf调用axis2的接口服务_接口服务_”暗示了一个名为“myService”的具体服务示例,这个服务利用CXF来调用Axis2实现的接口。"purpose1sv"可能是项目或功能的特定标识符,但没有足够的上...

    webservice axis2 cxf jar包及简单实例

    假设你已经下载了一个名为`webservice`的压缩包,里面可能包含了Axis2和CXF的相关jar包,以及示例代码或者配置文件。要创建一个基本的Web服务,你需要按照以下步骤操作: 1. **创建服务接口**:定义一个Java接口,...

    cxf与axis2区别

    CXF与Axis2框架区别详解 CXF和Axis2是两个流行的Webservice框架,都是由现有的项目逐渐演化而来的。Axis2是由Axis1.x系列演化而来,而Apache CXF则是由Celtix和XFire项目整合而生。在本文中,我们将探讨CXF和Axis2...

    用axis调用cxf写的webdservice接口所需要的jar

    axis.jar,axis-ant.jar,commons-discovery-0.2.jar,commons-logging-1.0.4.jar,jaxrpc.jar,log4j-1.2.8.jar,saaj.jar,wsdl4j-1.5.1.jar

    Axis和CXF的比较

    ### Axis与CXF的对比分析 #### 一、概述 在现代软件开发中,Web服务技术扮演着重要的角色,特别是SOAP(Simple Object Access Protocol)基于的Web服务,它允许应用程序通过HTTP进行通信并交换数据。在众多实现...

    java 通过axis调用天气预报的webservice

    2. **生成Java客户端 stubs**:使用Apache Axis,你可以通过运行wsdl2java命令将WSDL文件转换为Java类,这些类(也称为stubs)代表了你可以调用的服务方法。这样,你可以像调用本地Java方法一样调用远程的WebService...

    WebService:Axis客户端调用需要身份验证的CXF服务

    在本场景中,我们关注的是Axis客户端如何调用需要身份验证的CXF服务。Axis是一个开放源码的SOAP栈,常用于创建和部署Web服务,而CXF则是一个更现代的Java框架,也用于构建和消费Web服务,支持WS-Security等高级特性...

    Axis2,CXF版本学习笔记

    当我们谈论“Axis2,CXF版本学习笔记”时,这通常涉及到两个主要的Java Web服务框架:Apache Axis2和Apache CXF。这两个框架都用于构建和部署SOAP(简单对象访问协议)和RESTful(Representational State Transfer)...

    webservice :spring 3+cxf3.4服务方,AXIS1.4请示方调用

    本文将详细介绍如何使用Spring 3 + CXF 3.4搭建服务端,并通过Axis 1.4进行调用。 #### Spring 3 + CXF 3.4搭建WebService服务端 **步骤一:复制接口类** 首先,需要将定义好的接口类(例如`...

    Axis-cxf-WebService.zip

    在服务端,无论是使用Axis还是CXF,都需要定义服务接口,这通常是通过Java类实现,并使用特定的注解来声明其为Web服务。然后,需要一个实现类来提供实际的业务逻辑。服务端还需要一个部署文件,描述服务的元数据,如...

    Axis2与CXF的对比

    Apache Axis2和CXF都是Java世界中非常知名的Web服务框架,它们主要用于构建和部署Web服务。两者各有特色,适用于不同的应用场景。以下是对这两个框架特点、区别及适用场合的详细对比,以及它们在效率上的表现。 1. ...

    Axis1,Axis2,Xfire,CXF区别

    Axis1, Axis2, Xfire, CXF 区别 Axis1, Axis2, Xfire, CXF 是四种常用的WebService框架,它们之间有着不同的特点和应用场景。本文将对这四种框架进行详细的比较和分析,以帮助开发者选择合适的框架。 XFire 是一种...

    如何使用Axis_CXF创建WS服务

    使用axis和CXF实现web service的说明文档。

    搜集网上的资料总结的XFire,Axis2,CXF的对比

    本文主要对比了三种流行的Java Web服务框架:XFire、Axis2和CXF,以帮助开发者做出最佳选择。 首先,CXF是一个由Apache基金会维护的重量级SOA(面向服务架构)框架,它支持ESB(企业服务总线),并实现了Web服务、...

    axis调用webservice接口所需jar包.rar

    axis调用第三方webservice接口所需的jar包,包括axis-1.4.jar,axis-jaxrpc-1.3.jar,axis-jaxrpc-1.4.jar,commons-discovery-0.5.jar,commons-logging-1.2.jar,cxf-rt-databinding-jaxb-3.3.1.jar,javax.mail-...

    webService(基于cxf)的完整例子

    在这个基于CXF的Web服务完整例子中,我们将深入探讨CXF的核心概念、配置、以及如何创建和调用Web服务。 1. **CXF框架介绍**:CXF,全称为"Code first eXtended Framework",最初由XFire项目发展而来,后与Apache ...

    WebService Axis和XFire(CXF)的开发流程

    - **WSDL到Java**:从服务端获取WSDL文件,使用CXF或Axis提供的工具将其转换为Java客户端代码,然后在自己的应用中引入这些生成的类来调用服务。 - **动态代理**:对于CXF,可以通过JAX-WS API动态生成客户端代理...

    Java调用CXF WebService接口的两种方式实例

    Java调用CXF WebService接口的两种方式实例 Java调用CXF WebService接口是Java开发者在开发过程中经常遇到的问题。今天,我们将讨论Java调用CXF WebService接口的两种方式实例,即静态调用和动态调用。 静态调用 ...

Global site tag (gtag.js) - Google Analytics