Java开发WebServices传递pojo提示参数不匹配的问题

webservices服务用Java开发的时候,参数为基本数据类型是没有什么问题的。

但是如果是传递pojo,也就是java对象,可能你会遇到参数不匹配的问题。

webservices接口暴露出来以后肯定是一个wsdl文件,看到网上很多文章说“webservices传递pojo的时候,提示参数不匹配,很多人解决方式是把接口和pojo放在一起就好用了。这个其实是表象”

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://d.c.b.a/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" name="TestwsImpl1Service" targetNamespace="http://d.c.b.a/">
<wsdl:types>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://d.c.b.a/" elementFormDefault="unqualified" targetNamespace="http://d.c.b.a/" version="1.0">
<xs:element name="updatePerson" type="tns:updatePerson"/>
<xs:element name="updatePersonResponse" type="tns:updatePersonResponse"/>
<xs:complexType name="updatePerson">
<xs:sequence>
<xs:element minOccurs="0" name="arg0" type="tns:person"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="person">
<xs:sequence>
<xs:element name="age" type="xs:int"/>
<xs:element minOccurs="0" name="name" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="updatePersonResponse">
<xs:sequence>
<xs:element minOccurs="0" name="return" type="tns:person"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
</wsdl:types>
<wsdl:message name="updatePersonResponse">
<wsdl:part element="tns:updatePersonResponse" name="parameters"></wsdl:part>
</wsdl:message>
<wsdl:message name="updatePerson">
<wsdl:part element="tns:updatePerson" name="parameters"></wsdl:part>
</wsdl:message>
<wsdl:portType name="TestwsImpl1">
<wsdl:operation name="updatePerson">
<wsdl:input message="tns:updatePerson" name="updatePerson"></wsdl:input>
<wsdl:output message="tns:updatePersonResponse" name="updatePersonResponse"></wsdl:output>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="TestwsImpl1ServiceSoapBinding" type="tns:TestwsImpl1">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="updatePerson">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="updatePerson">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="updatePersonResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="TestwsImpl1Service">
<wsdl:port binding="tns:TestwsImpl1ServiceSoapBinding" name="TestwsImpl1Port">
<soap:address location="http://localhost:888/test1"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

以上是我开发的一个webservices接口对应的wsdl文件, 文件中我的targetNamespace是

targetNamespace="http://d.c.b.a/"

也就是说 我的webservices服务端的person和targetNamespace不是一样的路径。

------------------------------------------------------------------------------------------------------------------------

我们再来开发一个客户端程序。

客户端的person路径为服务端targetNamespace是对应关系。

这种情况下,传递pojo才能调通。

总结:webservices服务端的pojo路径无所谓在这里,只要客户端pojo包路径和wsdl文件中targetNamespace对应,就可以调用通过。

网上说:客户端必须把pojo和接口声明放在一起的结论其实是不对的。

时间: 2025-01-15 17:32:22

Java开发WebServices传递pojo提示参数不匹配的问题的相关文章

阿里巴巴 Java 开发手册 1.4.0

一.编程规约(一) 命名风格1. [强制]代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束.反例: _name / __name / $name / name_ / name$ / name__2. [强制]代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式.说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义.注意,即使纯拼音命名方式也要避免采用.正例: alibaba / taobao / youku / hangzhou 等国际通用的名称,可视同

用C#.NET调用Java开发的WebService传递int,double问题,出现java无法获得值!

用C#.NET调用Java开发的WebService时,先在客户端封装的带有int属性的对象,当将该对象传到服务器端时,服务器端可以得到string类型的属性值,却不能得到int类型.double和DateTime类型的值(在服务端得到的均为null) 解决办法: VS2005封装WebService引用 用C#.NET调用Java开发的WebService时,先在客户端封装的带有int属性的对象,当将该对象传到服务器端时,服务器端可以得到string类型的属性值,却不能得到int类型.doub

用C#.NET调用Java开发的WebService传递int,double问题,出现java无法获

用C#.NET调用Java开发的WebService传递int,double问题,出现java无法获得值! 用C#.NET调用Java开发的WebService时,先在客户端封装的带有int属性的对象,当将该对象传到服务器端时,服务器端可以得到string类型的属性值,却不能得到int类型.double和DateTime类型的值(在服务端得到的均为null) 解决办法: VS2005封装WebService引用 用C#.NET调用Java开发的WebService时,先在客户端封装的带有int属

关于JAVA中URL传递中文参数的问题

今天在调用一个接口时,需要传递一个中文参数,结果获取不到数据,原因就在于中文传参的编码问题. 问题来源:URL url= new URL("http://XXX?OrganName=司法厅"); 现解决办法如下: 1.对要进行URL传递的中文字符进行编码: String message = Java.NET.URLEncoder.encode("司法厅","utf-8"); 2.在取URL传递中文的页面对字符进行解码: String msg =

Java调用函数传递参数到底是值传递还是引用传递

今天翻看微信上有关Java技术的公众号时,看到了一篇关于Java中值传递的问题,文章讨论了在Java中调用函数进行传参的时候到底是值传递还是引用传递这个面试时会问到的问题.之前也接触过类似的问题,但只是知道是值传递,具体到为什么,一直不是太清楚.今天看了一下,算是明白了,写个博客记录一下. 首先先声明一下,在Java中函数传参是值传递,不是引用传递.要弄清楚这个问题之前要先弄清楚什么是值传递,什么是引用传递. 值传递(pass by value):是指在调用函数时将实际参数复制一份传递到函数中,

谈谈Google与微信H5牛牛的Java开发规范

多年前,Google发布微信H5牛牛搭建平台(h5.fanshubbs.com)来定义Java编码时应遵循的微信牛牛Q_1687054422规范:今年年初阿里则发布阿里巴巴Java 开发手册,并随后迭代了多个版本,直至9月份又发布了微信H5牛牛.这两大互联网巨头的初衷,都是希望能够统一标准,使业界编码达到一致性,提升沟通和研发效率,这对于我们码农无疑是很赞的一笔福利呀.笔者将两份规范都通读了一遍,其中列举的不少细则跟平时的编码习惯基本是符合的,不过还是有不少新奇的收获,忍不住记录在此,供日后念念

阿里巴巴 Java 开发手册评述

2016年底,阿里巴巴公开了其在内部使用的Java编程规范.随后进行了几次版本修订,笔者当时看到的版本为v1.0.2版.下载地址可以在其官方社区--云栖社区找到. 笔者作为一名有数年工作经验的Java程序员,仔细研读了这份手册,觉得是一份不可多得的好材料.正如阿里巴巴在发布时所说,"阿里巴巴集团推出的<阿里巴巴Java开发手册(正式版)>是公司近万名开发同学集体智慧的结晶,以开发视角为中心,详细列举了如何开发更加高效.更加容错.更加有协作性,力求知其然,更知其不然.结合正反例,让Ja

Chapter 1 Java开发前奏

第1章:初识Java 1.1 计算机的基础知识 1.1.1 计算机 计算机(Computer)全称:电子计算机,俗称电脑.是一种能够按照程序运行,自动.高速处理海量数据的现代化智能电子设备.由硬件和软件所组成,没有安装任何软件的计算机称为裸机.常见的形式有台式计算机.笔记本计算机.大型计算机等. 计算机的应用已渗透到社会的各个领域,正在改变着人们的工作.学习和生活的方式,推动着社会的发展.哪些方面? 1:科学计算 科学计算也称数值计算.计算机最开始是为解决科学研究和工程设计中遇到的大量数学问题的

Java编程思想重点笔记(Java开发必看)

Java编程思想,Java学习必读经典,不管是初学者还是大牛都值得一读,这里总结书中的重点知识,这些知识不仅经常出现在各大知名公司的笔试面 试过程中,而且在大型项目开发中也是常用的知识,既有简单的概念理解题(比如is-a关系和has-a关系的区别),也有深入的涉及RTTI和JVM底层 反编译知识. 1. Java中的多态性理解(注意与C++区分) Java中除了static方法和final方法(private方法本质上属于final方法,因为不能被子类访问)之外,其它所有的方法都是动态绑定,这意