使用spring-ws开发webservice

本文介绍了如何使用spring-ws开发web服务,强调了契约优先的开发方式,并详细阐述了发布web服务的步骤,包括编写接口定义、实现服务、发布服务。同时,解释了spring-ws处理请求的原理,提供了手工处理XML内容的方法,以及如何利用java工具将定义转换为java代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

spring是一个优雅的框架,将常用的技术粘合在一起。spring-ws相对于其他框架最大的优点是对web服务涉及技术的抽象非常的好,为webservice处理提供统一的模型,而又不限制实现时使用的技术。

发布webservice

发布webservice有以下几个步骤:
1. 编写服务接口定义,包括类型定义,服务方法定义。
2. 实现服务接口定义的方法。
3. 发布服务。
本文已一个订单服务为例

为什么契约优先

开发webservice可以定义java代码,通过框架生产wsdl/xsd内容。也可以采用契约优先方式,先定义wsdl/xsd,然后生成java代码。通过契约优先的方式有以下原因:
1. Object/XML之间的转换。对象与xml转换不能完全的匹配,xsd可以定义对象的限制,比如字符串必须是大写,而java对象没有办法定义限制。
2. java类不是可移植的类型。
3. 环形依赖。如果一个类之间相互依赖,则生成的xml会不停的嵌套。
详情可以参考《Spring Web Services Reference》

编写服务接口定义

定义数据类型,对于请求和反馈,尽量增加一个基础类,这样可以随时增加公共的内容。
xsd文件内容

<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="http://www.nxmax.net/hello"
    elementFormDefault="qualified" xmlns="http://www.w3.org/2001/XMLSchema"
    xmlns:tns="http://www.nxmax.net/hello">
    <complexType name="BaseRespType" abstract="true">
        <sequence>
            <element name="success" type="boolean" minOccurs="1"
                maxOccurs="1" />
            <element name="message" type="string" minOccurs="0" />
        </sequence>
    </complexType>
    <complexType name="BaseReqType" abstract="true">
        <sequence>
            <element name="callerIndentifier" type="string" minOccurs="1" maxOccurs="1"></element>
        </sequence>
    </complexType>
    <element name="CreateOrderReq">
        <complexType>
            <complexContent>
                <extension base="tns:BaseReqType">
                    <sequence>
                        <element name="GoodCode" type="string" />
                        <element name="Amount" type="int" />
                        <element name="Remarks" type="string" minOccurs="0" />
                    </sequence>
                </extension>
            </complexContent>
        </complexType>
    </element>
    <element name="CreateOrderResp">
        <complexType>
            <complexContent>
                <extension base="tns:BaseRespType">
                    <sequence>
                        <element name="OrderNum" type="string" minOccurs="1"
                            maxOccurs="1"></element>
                    </sequence>
                </extension>
            </complexContent>
        </complexType>
    </element>

    <element name="InquireReq">
        <complexType>
            <complexContent>
                <extension base="tns:BaseReqType">
                    <sequence>
                        <element name="orderNum" type="string" minOccurs="1" maxOccurs="1"></element>
                    </sequence>
                </extension>
            </complexContent>
        </complexType></element>

    <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值