码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2014-10-31 13:54:09      阅读:276      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   io   color   os   ar   使用   

前言

在前面的三篇中

[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 的代码如下:

bubuko.com,布布扣

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

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

bubuko.com,布布扣

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

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


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

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

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


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

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

输入: city

输出: returnCode, returnMsg


一个例子

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

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

bubuko.com,布布扣

2. 然后产生web service

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

bubuko.com,布布扣

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

bubuko.com,布布扣


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

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

如何换?

1. 点击以下部分

bubuko.com,布布扣

2. 再点击

bubuko.com,布布扣

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

bubuko.com,布布扣

bubuko.com,布布扣


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

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

bubuko.com,布布扣

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

bubuko.com,布布扣

Impl,java 文件

bubuko.com,布布扣

产生的deploy.wsdd

bubuko.com,布布扣

问题基本解决了


产生的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>


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

标签:des   style   blog   http   io   color   os   ar   使用   

原文地址:http://blog.csdn.net/oscar999/article/details/40649553

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!