`
t22011787
  • 浏览: 74823 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

axis调用cxf服务端

阅读更多
使用axis(版本1.4)调用cxf服务端一直调用不成功,郁闷了一上午啊。经过google之后,嘻嘻~终于得以解决,讲述一下我的代码和解决过程
---使用了bboss mvc集成的cxf作为ws服务端
axis需要的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
import javax.jws.WebService;
/**
 * <p>类的描述:XX数据同步</p>
 * @author XX
 * @version 1.0
 * @date 2011-8-9 上午11:38:20
 */
@WebService(name="DataSynInf")
public interface DataSynInf {
        
        /**
         * XXXXXXXXX
         * @param xml
         * @return
         */
        public String synMaterialAndBom(String xml);

}

public static void testDemo() {
                try {

                        String endpoint = " http://172.16.81.65:8080/cxfservices/InterfacePort";
                        // 调用过程
                        Service service = new Service();

                        Call call = (Call) service.createCall();

                        call.setTargetEndpointAddress(new java.net.URL(endpoint));

                        call.setOperationName("synMaterialAndBom");// WSDL里面描述的操作名称

                        call.addParameter("xml",
                                        org.apache.axis.encoding.XMLType.XSD_STRING,
                                        javax.xml.rpc.ParameterMode.IN);// 操作的参数

                        call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);// 设置返回类型

                        call.setUseSOAPAction(true);

                        // 给方法传递参数,并且调用方法
                        String temp = "good";
                        Object[] obj = new Object[] { temp };
                        String result = (String) call.invoke(obj);

                        System.out.println("Result is : " + result);
                } catch (Exception e) {
                        e.printStackTrace();
                }
        }

AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Client
 faultSubcode: 
 faultString: Unmarshalling Error: unexpected element (uri:&quot;&quot;, local:&quot;xml&quot;). Expected elements are &lt;{}arg0&gt; 
 faultActor: 
 faultNode: 
 faultDetail: 
        {http://xml.apache.org/axis/}stackTrace:Unmarshalling Error: unexpected element (uri:&quot;&quot;, local:&quot;xml&quot;). Expected elements are &lt;{}arg0&gt; 
        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(AbstractSAXParser.java:633)
        at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanEndElement(XMLNSDocumentScannerImpl.java:719)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1685)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
        at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
        at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
        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.transport.http.HTTPSender.readFromSocket(HTTPSender.java:796)
        at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:144)
        at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
        at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
        at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
        at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
        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 com.zoomlion.Demo.testDemo(Demo.java:81)
        at com.zoomlion.Demo.main(Demo.java:54)

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

Unmarshalling Error: unexpected element (uri:"", local:"xml"). Expected elements are <{}arg0> 
        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(AbstractSAXParser.java:633)
        at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanEndElement(XMLNSDocumentScannerImpl.java:719)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1685)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
        at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
        at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
        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.transport.http.HTTPSender.readFromSocket(HTTPSender.java:796)
        at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:144)
        at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
        at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
        at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
        at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
        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 com.zoomlion.Demo.testDemo(Demo.java:81)
        at com.zoomlion.Demo.main(Demo.java:54)


错误原因就是因为没有在cxf服务端的方法中的参数上注解为ws调用的参数,修改服务端代码如下:
import javax.jws.WebParam;
import javax.jws.WebService;


/**
 * <p>类的描述:XX数据同步</p>
 * @author XX
 * @version 1.0
 * @date 2011-8-9 上午11:38:20
 */
@WebService(name="DataSynInf")
public interface DataSynInf {
        
        /**
         * 同步物料和bom关系接口
         * @param xml
         * @return
         */
        public String synMaterialAndBom(@WebParam(name="xml") String xml);

}


但是使用cxf调用cxf服务端,不管它有没有注解参数都可以成功调用!以后cxf服务端一定要记得注解参数
分享到:
评论

相关推荐

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

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

    webService(基于cxf)的完整例子

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

    webservice axis2 cxf jar包及简单实例

    本文将深入探讨两种流行的Java Web服务框架——Axis2和CXF,并提供一个简单的实例来帮助理解它们的工作原理和使用方法。 首先,让我们了解一下`Axis2`。Axis2是Apache软件基金会开发的一个高性能、灵活且可扩展的...

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

    在描述中,“用框架cxf调用axis2提供的接口服务的一个简单例子”,意味着我们将探讨一个简单的CXF客户端如何与Axis2服务端进行交互。这通常涉及到以下步骤: 1. **创建CXF客户端**:首先,我们需要创建一个CXF...

    Axis和CXF的比较

    Apache Axis是一款开源的、用于创建和调用Web服务的工具包。它最初由IBM和Sun Microsystems共同开发,并于2002年作为Apache项目的子项目发布。Axis支持多种语言和平台,但最常被用来构建Java Web服务。目前Axis有两...

    Axis-cxf-WebService.zip

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

    WebServices开发-Axis实例CXF实例

    在Axis中,开发者可以通过简单的API创建服务端的WebServices,也可以生成客户端的Stubs,使得调用远程服务如同调用本地方法一样简单。Axis支持JAX-RPC(Java API for XML-based RPC)规范,但随着JAX-WS(Java API ...

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

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

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

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

    cxf_axis_xfire客户端调用的几种方法[收集].pdf

    CXF、AXIS2、XFire是三种流行的Java Web服务框架,它们允许开发者创建和消费Web服务。在本文中,我们将重点关注CXF客户端调用Web服务的方法,特别是处理Map类型参数的问题。 首先,CXF客户端调用Web服务时,通常会...

    springboot+webservice搭建webservice服务端及使用java客户端两种方式进行调用webservice接口

    本教程将讲解如何使用Spring Boot集成Apache CXF(一个强大的Java Web Service框架)来构建服务端,并探讨两种Java客户端调用Web Service接口的方法。 首先,我们需要理解Spring Boot与CXF的整合。Spring Boot通过...

    cxf+spring+axis包

    【描述】"cxf-2.4.1+axis-1.4,整合spring3.0所用jar包"说明了这个压缩包的目的,即为开发者提供了一套完整的环境,用于在Spring 3.0框架下整合Apache CXF(一个开源的服务端和客户端Web服务实现)和Axis(一个用于...

    axis2-1.8.0apache-cxf-3.4.4.rar

    2. **强大的代码生成工具**:CXF提供了WSDL-to-Java和Java-to-WSDL的代码生成,方便开发者快速建立服务端和客户端代码。 3. **丰富的API和插件**:CXF提供了一套丰富的API供开发者使用,并且有众多插件,如Spring...

    Axis2教程和java调用webservice的各种方法总结

    - **Axis2客户端**:Axis2不仅用于服务端,还有客户端库,可以方便地从Java应用中调用Web服务。 - **Web服务的生命周期管理**:包括服务的创建、部署、测试和调试,这些过程在Axis2中都有详细的指南和支持。 - **...

    WebService调用的几种方式

    使用Axis调用WebService时,你需要先下载Axis的二进制包,然后通过WSDL(Web服务描述语言)文件生成客户端存根类。这些存根类提供了与服务交互的方法,使得开发者可以像调用本地方法一样调用远程服务。 2. CXF:...

    Java WebService 简单实例 方式二(axis1直接调用方式)

    此外,尽管Axis1是一个成熟的工具,但随着技术的发展,JAX-WS的其他实现如Apache CXF和Glassfish Metro等已经提供了更强大的功能和更好的性能。因此,在选择Web Service框架时,应根据项目需求和技术支持来决定。 ...

    java的webService源码(使用cxf)

    1. **CXF 框架基础**:CXF 是一个全方位的服务框架,它集成了 Apache SOAP、Axis 和 Neethi 等项目,提供了一套完整的工具链,包括 WSDL 生成、服务端点实现、客户端代理生成等。使用 CXF,开发者可以直接在 POJO...

Global site tag (gtag.js) - Google Analytics