使用@WebResult注解

为了演示注解@WebResult如何工作,下面的例子是基于前面例子:ch01.ts.TimeServer SEI修改的另一个新版本。

例:使用了注解的TimeServer服务

package ch01.ts;

import javax.jws.WebMethod;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;

/**
 * 服务端点接口定义(SEI)
 * @author fuhd
 */
@WebService
@SOAPBinding(style = Style.RPC)
public interface TimeServer {
	@WebMethod 
	@WebResult(partName = "time_response")
	String getTimeAsString();
	
	@WebMethod 
	@WebResult(partName = "time_response")
	long getTimeAsElased();
}

两个服务操作方法中均添加了@WebResult注解。在产生的WSDL文档中,message元素反映了这个变化:

<message name="getTimeAsString"/>
<message name="getTimeAsStringResponse">
    <part name="time_response" type="xsd:string"/>
</message>
<message name="getTimeAsElased"/>
<message name="getTimeAsElasedResponse">
    <part name="time_response" type="xsd:long"/>
</message>

没有添加@WebResult注解之前,WSDL文档中,message元素是这样的:

<message name="getTimeAsString"/>
<message name="getTimeAsStringResponse">
    <part name="return" type="xsd:string"/>
</message>
<message name="getTimeAsElased"/>
<message name="getTimeAsElasedResponse">
    <part name="return" type="xsd:long"/>
</message>

两个message元素对比,我们可以看出,return标签被换成了time_response,也就是@WebResult注解定义的。在从web服务返回的SOAP消息中也同样反映出了这点变化,以调用getTimeAsString服务方法为例:

<?xml version="1.0" ?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Body>
        <ns2:getTimeAsStringResponse xmlns:ns2="http://ts.ch01/">
            <time_response>Mon Mar 17 10:41:13 CST 2014</time_response>
        </ns2:getTimeAsStringResponse>
    </S:Body>
</S:Envelope>

没有添加@WebResult注解时,SOAP消息返回是这样的:

<?xml version="1.0" ?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Body>
        <ns2:getTimeAsStringResponse xmlns:ns2="http://ts.ch01/">
            <return>Mon Mar 17 10:46:30 CST 2014</return>
        </ns2:getTimeAsStringResponse>
    </S:Body>
</S:Envelope>

从SOAP消息对比中,我们也可以看到,return标签也相应地被替换成了time_response标签。假设我们只对getTimeAsString增加@WebResult注解,那么返回的SOAP消息中针对该服务操作使用time_response标签,而针对getTimeAsElapsed服务操作所返回的SOAP消息中仍然使用默认的return标签。

在java中,提供了许多注解来决定生成的WSDL文档以什么样的格式展现。我们后面将通过简单的篇幅来介绍这些注解。除一些特殊目的的外,我们可以很容易地简化对注解的使用。在WSDL和SOAP消息中,无论是用到了time_response标签还是return标签,TimeServer的正确运行都不受影响。

转载于:https://my.oschina.net/fhd/blog/208825

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值