- 浏览: 74823 次
- 性别:
- 来自: 长沙
文章分类
最新评论
-
yin_bp:
职业趋势 -
lingyunice:
很好,学习了
oracle定时器调用存储过程 -
yin_bp:
收益匪浅,不错,希望楼主继续
oracle定时器调用存储过程
使用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
错误原因就是因为没有在cxf服务端的方法中的参数上注解为ws调用的参数,修改服务端代码如下:
但是使用cxf调用cxf服务端,不管它有没有注解参数都可以成功调用!以后cxf服务端一定要记得注解参数
---使用了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:"", local:"xml"). Expected elements are <{}arg0> faultActor: faultNode: faultDetail: {http://xml.apache.org/axis/}stackTrace: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) {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服务端一定要记得注解参数
发表评论
-
eclipse启动无响应
2013-04-18 11:35 6599http://www.jems.me/blog/web/115 ... -
mysql帮助
2012-03-19 17:58 0导入dump文件 mysql -uroot -p fantas ... -
maven中央仓库地址
2011-08-10 11:26 4597需要jar包时就不要到处去搜索下载了,mvn中央库一定能找到你 ... -
jquery使用积累
2011-08-05 10:56 796对于select的操作 1.删除select名称为link_, ... -
js转码内置函数
2011-07-28 10:25 460escape()编码,不能编码URI unescape()解码 ... -
JAVA正则表达式收集
2011-07-05 17:56 781匹配中文字符的正则表 ... -
eclipse知识库
2011-07-05 17:51 9351、利其器 项目组使用eclipse统一编码,即修改ecl ... -
软件版本Beta,RC,Demo,Build
2011-01-01 15:04 780总结 版本号: V(Version):即版本,通常用数字表示版 ... -
学习网页大全
2009-09-08 17:21 840设计模式study:http://www.jdon.com/d ...
相关推荐
本文将深入探讨如何使用CXF客户端调用Axis服务端的流程。 ### 一、了解CXF和Axis **CXF**(CXF: Composite eXtensible Framework)是一个开源的Java Web服务框架,它提供了多种方式来创建和使用Web服务,包括JAX-...
在这个基于CXF的Web服务完整例子中,我们将深入探讨CXF的核心概念、配置、以及如何创建和调用Web服务。 1. **CXF框架介绍**:CXF,全称为"Code first eXtended Framework",最初由XFire项目发展而来,后与Apache ...
本文将深入探讨两种流行的Java Web服务框架——Axis2和CXF,并提供一个简单的实例来帮助理解它们的工作原理和使用方法。 首先,让我们了解一下`Axis2`。Axis2是Apache软件基金会开发的一个高性能、灵活且可扩展的...
在描述中,“用框架cxf调用axis2提供的接口服务的一个简单例子”,意味着我们将探讨一个简单的CXF客户端如何与Axis2服务端进行交互。这通常涉及到以下步骤: 1. **创建CXF客户端**:首先,我们需要创建一个CXF...
Apache Axis是一款开源的、用于创建和调用Web服务的工具包。它最初由IBM和Sun Microsystems共同开发,并于2002年作为Apache项目的子项目发布。Axis支持多种语言和平台,但最常被用来构建Java Web服务。目前Axis有两...
在服务端,无论是使用Axis还是CXF,都需要定义服务接口,这通常是通过Java类实现,并使用特定的注解来声明其为Web服务。然后,需要一个实现类来提供实际的业务逻辑。服务端还需要一个部署文件,描述服务的元数据,如...
在Axis中,开发者可以通过简单的API创建服务端的WebServices,也可以生成客户端的Stubs,使得调用远程服务如同调用本地方法一样简单。Axis支持JAX-RPC(Java API for XML-based RPC)规范,但随着JAX-WS(Java API ...
本文将详细介绍如何使用Spring 3 + CXF 3.4搭建服务端,并通过Axis 1.4进行调用。 #### Spring 3 + CXF 3.4搭建WebService服务端 **步骤一:复制接口类** 首先,需要将定义好的接口类(例如`...
- **WSDL到Java**:从服务端获取WSDL文件,使用CXF或Axis提供的工具将其转换为Java客户端代码,然后在自己的应用中引入这些生成的类来调用服务。 - **动态代理**:对于CXF,可以通过JAX-WS API动态生成客户端代理...
CXF、AXIS2、XFire是三种流行的Java Web服务框架,它们允许开发者创建和消费Web服务。在本文中,我们将重点关注CXF客户端调用Web服务的方法,特别是处理Map类型参数的问题。 首先,CXF客户端调用Web服务时,通常会...
本教程将讲解如何使用Spring Boot集成Apache CXF(一个强大的Java Web Service框架)来构建服务端,并探讨两种Java客户端调用Web Service接口的方法。 首先,我们需要理解Spring Boot与CXF的整合。Spring Boot通过...
【描述】"cxf-2.4.1+axis-1.4,整合spring3.0所用jar包"说明了这个压缩包的目的,即为开发者提供了一套完整的环境,用于在Spring 3.0框架下整合Apache CXF(一个开源的服务端和客户端Web服务实现)和Axis(一个用于...
2. **强大的代码生成工具**:CXF提供了WSDL-to-Java和Java-to-WSDL的代码生成,方便开发者快速建立服务端和客户端代码。 3. **丰富的API和插件**:CXF提供了一套丰富的API供开发者使用,并且有众多插件,如Spring...
- **Axis2客户端**:Axis2不仅用于服务端,还有客户端库,可以方便地从Java应用中调用Web服务。 - **Web服务的生命周期管理**:包括服务的创建、部署、测试和调试,这些过程在Axis2中都有详细的指南和支持。 - **...
使用Axis调用WebService时,你需要先下载Axis的二进制包,然后通过WSDL(Web服务描述语言)文件生成客户端存根类。这些存根类提供了与服务交互的方法,使得开发者可以像调用本地方法一样调用远程服务。 2. CXF:...
此外,尽管Axis1是一个成熟的工具,但随着技术的发展,JAX-WS的其他实现如Apache CXF和Glassfish Metro等已经提供了更强大的功能和更好的性能。因此,在选择Web Service框架时,应根据项目需求和技术支持来决定。 ...
1. **CXF 框架基础**:CXF 是一个全方位的服务框架,它集成了 Apache SOAP、Axis 和 Neethi 等项目,提供了一套完整的工具链,包括 WSDL 生成、服务端点实现、客户端代理生成等。使用 CXF,开发者可以直接在 POJO...