[Axis2与Eclipse整合开发Web Service系列之三] 服务端返回值

前言

在前面的三篇中

[Axis2与Eclipse整合开发Web Service系列之一] 生成Web Service Client(将WSDl 转化成 Java代码)

[Axis2与Eclipse整合开发Web Service系列之二] Top-Down方式,通过WSDL逆向生成服务端

[Axis2与Eclipse整合开发Web Service系列之二] Top-Down方式,通过WSDL逆向生成服务端(续)

介绍了如何使用 axis2 与 eclipse 的开发web Service 。在第三篇中返回的是一个整型值 而且是返回一个值。

产生的 XXSOAPImpl,java 的代码如下:

直接这样, 是没什么问题。

但是如果返回多值的话, 产生的代码类似:

通过StringHolder 这个类来实现返回值。

可是通过Client 端调用有发现,无法取得这个值。

首先把这个问题的解法给出来: 把Elements 中 Request 和 Response 的名字设成大写

1. 当把Elements 中 Request 和 Response 的名字设成小写, 返回值以StringHolder实现

2. 当把Elements 中 Request 和 Response 的名字设成小写, 返回值产生新的Class实现

下面就以一个实际的例子来看这个问题。

本篇的例子是一个 天气预报的web service .

输入: city

输出: returnCode, returnMsg

一个例子

1. 首先建立一个 wsdl , 名字为 WeatherForecastService.wsdl

在设计视图中看到的效果如下:

2. 然后产生web service

产生后的服务端代码结构:

3. 产生的 deploy.wsdd 的内容如下

使用这种方式实现的server 端, 调用的时候发现无法获取返回值。

接下来, 修改配置, 把名字换成大写。

如何换?

1. 点击以下部分

2. 再点击

3. 接下来, 修改名字, 主要是改成大写

这里除了可以修改 名字之外, 还可以在 Types 区域中,添加新的类型,

添加后的类型可以在通过如下方式使用:

修改完成后, 重新产生新的代码:

Impl,java 文件

产生的deploy.wsdd

问题基本解决了

产生的WSDL

贴一下最总产生的 WSDL 的内容:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.oscar999.com/WeatherForecastService/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="WeatherForecastService" targetNamespace="http://www.oscar999.com/WeatherForecastService/">
  <wsdl:types>
    <xsd:schema targetNamespace="http://www.oscar999.com/WeatherForecastService/">
       <xsd:complexType name="WeatherResponse">
      	<xsd:sequence>
      		<xsd:element name="returnCode" type="xsd:string"></xsd:element>
      		<xsd:element name="returnMsg" type="xsd:string"></xsd:element>
      	</xsd:sequence>
      </xsd:complexType>

      <xsd:element name="GetWeatherRequest">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element maxOccurs="1" minOccurs="1" name="city" type="xsd:string"/>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="GetWeatherResponse"
      	type="tns:WeatherResponse">
      </xsd:element>
    </xsd:schema>
  </wsdl:types>

  <wsdl:message name="getWeatherRequest">
    <wsdl:part element="tns:GetWeatherRequest" name="parameters"/>
  </wsdl:message>
  <wsdl:message name="getWeatherResponse">
    <wsdl:part element="tns:GetWeatherResponse" name="parameters"/>
  </wsdl:message>
  <wsdl:portType name="WeatherForecastService">
    <wsdl:operation name="getWeather">
      <wsdl:input message="tns:getWeatherRequest"/>
      <wsdl:output message="tns:getWeatherResponse"/>
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="WeatherForecastServiceSOAP" type="tns:WeatherForecastService">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="getWeather">
      <soap:operation soapAction="getWeather" style="document"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="WeatherForecastService">
    <wsdl:port binding="tns:WeatherForecastServiceSOAP" name="WeatherForecastServiceSOAP">
      <soap:address location="http://www.oscar999.com/WeatherForecastService"/>
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>

时间: 2024-10-19 17:23:19

[Axis2与Eclipse整合开发Web Service系列之三] 服务端返回值的相关文章

[Axis2与Eclipse整合开发Web Service系列之二] Top-Down方式,通过WSDL逆向生成服务端(续)

前言 本篇是承接上一篇: [Axis2与Eclipse整合开发Web Service系列之二] Top-Down方式,通过WSDL逆向生成服务端 在上一篇粗略地介绍了如何使用Top-Down的方式创建一个web service .  但是对于如何部署及调用,以及一些细节的部分基本上没有介绍. 应某些博友的要求, 也适逢自己有空, 接下来就详细介绍一下整个部分如何进行. 环境准备 JDK 肯定要安装了, 这个就不多讲了. 1. eclipse  3.5.2 对eclipse 版本的要求其实不是很严

Web Service学习之服务端搭建与客户端调用

?工作中用到了Web Service,但是对这块不是很熟悉,决定花时间学习一下,现在记录一下最基本的入门知识点. 使用Java搭建Web Service服务端,使用Python脚本调用接口. 一.Web Service服务端 1.在Eclipse中新建一个Java工程,新建test.TestWebService类 package test; import javax.jws.WebService; import javax.xml.ws.Endpoint; @WebService public 

[web service]axis2+eclipse+tomcat开发web service

首先需要下载相应的安装包. jsdk1.5 :自己网上搜搜有的是. tomcat:http://tomcat.apache.org/download-60.cgi 下载tomcat 6.0 zip文件. eclipse :下载http://www.eclipse.org/downloads/  Eclipse IDE For java EE developers axis2:http://axis.apache.org/axis2/java/core/download.cgi 下载Binary

JAVA开发Web Service几种框架介绍

在讲Web Service开发服务时,需要介绍一个目前开发Web Service的几个框架,分别为Axis,axis2,Xfire,CXF以及JWS(也就是前面所述的JAX-WS,这是Java6发布所提供的对Web Service服务的一种实现.)前面几项都为开源项目,而其中又以axis2与cxf所最为常用,Axis与XFire已随着技术不断的更替慢慢落幕,而目前也只有axis2和cxf官方有更新,Axis与XFire都已不再更新. 下面就分别介绍下这几个框架之间的区别,以便大家进行更好的选择:

Web Service学习-CXF开发Web Service实例demo(一)

Web Service是什么? Web Service不是框架.更甚至不是一种技术. 而是一种跨平台,跨语言的规范 Web Service解决什么问题: 为了解决不同平台,不同语言所编写的应用之间怎样调用问题.比如.有一个C语言写的程序.它想去调用java语言写的某个方法. 集中解决:1,远程调用 2.跨平台调用 3,跨语言调用 实际应用: 1.同一个公司的新,旧系统的整合.Linux上的java应用,去调用windows平台的C应用 2,不同公司的业务整合.业务整合就带来不同公司的系统整合.不

构建安全的Xml Web Service系列之如何察看SoapMessage

原文:构建安全的Xml Web Service系列之如何察看SoapMessage 上一篇文章地址:构建安全的Xml Web Service系列一之初探使用Soap头 (5-22 12:53)          要分析Xml Web Service的安全性,首先要解决的问题是我们能了解和清楚Soap消息的格式和内容,如果获得不了SoapMessage,分析如何能构建安全Xml web service也就无从下手,即使分析出来,自己也可 能模模糊糊,不能定论.下面就分析下如何获得SoapMessa

构建安全的Xml Web Service系列之wse之证书存储位置

原文:构建安全的Xml Web Service系列之wse之证书存储位置 我们在前几天对xml web service的安全性提出了一些建议,大家可以通过以下地址访问: 构建安全的Xml Web Service系列之初探使用Soap头 构建安全的Xml Web Service系列之如何察看SoapMessage 构建安全的Xml Web Service系列之SSL篇 我曾经在上面几篇文章中承诺过要写一些有关wse3.0的,可一直没有时间,自身对wse3.0的认识也是非常有限,所以一直没有实现诺言

构建安全的Xml Web Service系列之初探使用Soap头

原文:构建安全的Xml Web Service系列之初探使用Soap头 Xml Web Service 从诞生那天就说自己都么都么好,还津津乐道的说internet也会因此而进入一个新纪元,可5年多来,Xml Web Service并没有像当初宣扬的那样火起来,尽管在一些领域之内,也有人牛刀小试,但从整体而言,Service还并没有得到广泛的应用,原因有很多,有一些来源于目前各大厂商都坚持自己的service标准,不能形成统一,也有对现有的稳定系统不愿进行更改的原因,但还包括web servic

SSM框架开发web项目系列(二) MyBatis真正的力量

前言 上篇SSM框架环境搭建篇,演示了我们进行web开发必不可少的一些配置和准备工作,如果这方面还有疑问的地方,可以先参考上一篇“SSM框架开发web项目系列(一) 环境搭建篇”.本文主要介绍MyBatis的基础内容,包括基本概念.开发步骤.使用实例等.说起MyBatis,工作中做过SSH/SSM相关Web开发的或者正在学习MyBatis的人或多或少都会接触到类似“MyBatis和Hibernate有什么区别?”,“MyBatis和Hibernate哪个更好?”,“为什么Mybatis用的人越来