`

[WebService] 使用Axis2开发WebService-基本概念

    博客分类:
  • SOA
阅读更多

名词解释

EndPoint : 端点 http://www.bisoft.tl/services/HelloService
Operation : 操作 hello
NameSpace : 命名空间 http://www.bisoft.tl/ns
LocalName : 本地命名 hello
QName : 完全限定名 hello in http://www.bisoft.tl/ns

端点指位置,而命名空间与位置是不同概念。虽然命名空间也类似网址的形式,但实际这个网址只是作为唯一的ID用来区分名称相同的操作。

XML Schema basic data type : XML Schema 基本数据类型
LocalName  DataType
----------------------------------------------------
string     string  in http://www.w3.org/2001/XMLSchema
int        integer in http://www.w3.org/2001/XMLSchema

Parameters : 参数 msg:string
Return : 返回值 code:int

实际上,在WS中,我们把 input message 叫方法调用 ,而 part 代表参数, 而返回值叫 output message。

一个操作如下:
operation
---------------------------------------------------------
LocalName : hello
NameSpace : http://www.bisoft.tl/ns
Input Message:
    Part 1:
        Name : msg
        Type : string in http://www.w3.org/2001/XMLSchema
OutputMessage:
    Part 1:
        Name : code
        Type : int in http://www.w3.org/2001/XMLSchema   


调用方法的请求如下:
request to hello
------------------------------------------------------------
<foo:hello xmlns:foo="http://www.bisoft.tl/ns">
    <msg>hello world!</msg>
</foo:hello>

foo 代表命名空间的前缀。
实际上由于没有在任何SCHEMA中声明msg 类型,因此要显式声明。
<foo:hello xmlns:foo="http://www.bisoft.tl/ns" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-INSTANCE">
   <msg xsi:type="xsd:string">Hello World!</msg>
</foo:hello>

调用方法返回的响应如下:
response from hello
------------------------------------------------------------
<foo:hello xmlns:foo="http://www.bisoft.tl/ns">
    <code>1</code>
</foo:hello>


上面介绍的这种RPC STYLE叫RPC风格(样式)。
RPC : 远程方法调用。



RPC不是唯一设计WS的方法,下面介绍DOCUMENT STYLE文档风格(样式)。
上面的参数只能是简单的类型,其实可以创建复杂的类型。
下面使用XSD创建一个新的HelloRequest, HelloResponse元素。
<xsd:schema targetNameSpace="http://www.bisoft.tl/ns" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="HelloRequest">
    <xsd:complexType>
        <xsd:sequence>
            <xsd:element name="msg" type="xsd:string" />
        </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="HelloResponse">
    <xsd:complexType>
            <xsd:element name="code" type="xsd:int" />
    </xsd:complexType>
  </xsd:element>

</xsd:schema>

同时修改操作:
operation
---------------------------------------------------------
LocalName : hello
NameSpace : http://www.bisoft.tl/ns
Input Message:
    Part 1:
        Name : HelloRequest
        Element: HelloRequest in http://www.bisoft.tl/ns
OutputMessage:
    Part 1:
        Name : HelloReponse
        Element : HelloRequest in http://www.bisoft.tl/ns


调用请求:
<foo:HelloRequest xmlns:foo="http://www.bisoft.tl/ns">
    <msg>Hello World!</msg>
</foo:HelloRequest >

返回响应:
<foo:HelloReponsexmlns:foo="http://www.bisoft.tl/ns">
    <code>1</code>
</foo:HelloReponse>

这种文档风格的元素必须是定义良好的Well Defined。

两种风格的区别在于前者不能做Schema校验,而后者可以。因此后者渐渐成了主流。


PortType : 端口类型, WS没有直接包含所有操作,而是将操作分组成不同的端口类型。一个端口类型相当于Java中的类,而操作相当于一个静态方法。端口类型必须是唯一的,因些它也有完全限定名QName。

Binding : 绑定, 实际上一个端口类型支持不同的消息格式,如SOAP格式或文本格式。消息有多种方式传输Transported,如HTTP POST请求, SMTP邮件等。每种不同的组合起来叫绑定。
Binding
-----------------------
Name:binding1
PortType:stringutil
Format:SOAP
Transport:HTTP

Name:binding2
PortType:stringutil
Format:TEXT
Transport:SMTP

目前SOAP+HTTP比较常用。

SOAP : 简单对象访问协议。

Transported : 运送,传输。

PORT : 端口,绑定指定的PC端口及端点信息。可将WS部署到多台机器上,也可以部署到同一台机器的不同端口上。部署在同一台机器上的语言实现可以不同。如Java, C#。绑定方式也可以不同,如SOAP+HTTP, TEXT+HTTP。

TargetNameSpace : 目标命名空间。你也可能使用URN(Unique Resource Name)作为你的操作的命名空间。命名空间必须是一个URI,如URL,URN。
URN格式:
urn:object-type:object-id

示例:
urn:bisoft-tl:007

WSDL : WebService描述语言。包括SCHEMA, OPERATION, BINDING, PORT四大部分。

小结 :
WebService 跨平台,且语言无关。
一个WS包含一个或多个端口, 一个绑定部署指定消息格式与传输类型的端口类型到指定端点(网络地址)的端口上。一个端口类型包含一个或多个操作。一个操作包含两个消息。一个消息包含一个或多个参数。一个参数属于一个特定的Schema 基本类型或自定义类型。每个端口, 绑定, 端口类型, 操作都必须用 QName 来进行唯一性标识。
使用URN来唯一标识的话必须到 IANA(因特网编号管理局) 注册,防止对象类型冲突。



分享到:
评论

相关推荐

    webService 生成插件axis2-idea-plugin-1.7.8

    webService 生成插件axis2- idea-plugin-1.7.8

    WebService axis2-eclipse-codegen-plugin

    总的来说,WebService Axis2 Eclipse Codegen Plugin是开发基于Axis2的Web服务不可或缺的工具,它提供了一站式的解决方案,帮助开发者快速创建、测试和部署Web服务,同时降低了Web服务开发的复杂性。通过熟练掌握这...

    SpringBoot开发WebService之Axis示例

    在本文中,我们将深入探讨如何使用SpringBoot框架开发基于Axis的Web服务。SpringBoot以其便捷的启动和配置方式,已经成为Java开发中的首选框架之一。而 Axis 是一个流行的Apache项目,用于创建和部署Web服务,它提供...

    axis2开发webservice(二)

    资源包含了:axis2-1.7.4-bin.zip、axis2-1.7.4-war.zip、axis2-eclipse-...备注:资源超过了70M 分成了3部分 见axis2方式开发webservice(一)和 axis2方式开发webservice(二)、 axis2方式开发webservice(三)

    完整的axis2 jar包包含实例.zip

    axis2 webservice 服务端jar包: --&gt;axis2-kernel-1.6.1.jar --&gt;axis2-spring-1.6.1.jar --&gt;axis2-transport-http-1.6.1.jar --&gt;XmlSchema-1.4.7.jar --&gt;wsdl4j-1.6.2.jar --&gt;axiom-api-1.2.12.jar --&gt;axiom...

    基于axis2实现的webservice简单实现(客户端+服务端)。

    【标题】中的“基于axis2实现的webservice简单实现(客户端+服务端)”表明了本文将探讨如何使用Apache Axis2框架来创建和消费Web服务。Apache Axis2是Apache软件基金会开发的一个Web服务引擎,它提供了高效且灵活的...

    axis2-1.8.0apache-cxf-3.4.4.rar

    标题中的"axis2-1.8.0apache-cxf-3.4.4.rar"是一个压缩包文件,其中包含了两个重要的...为了充分利用这些工具,开发者需要具备Java编程基础,了解SOAP和Web服务的基本概念,以及熟悉使用Apache相关的开发环境和工具。

    axis2发布webservice和调用axis2服务接口

    在IT行业中,Axis2是Apache软件基金会开发的一个用于构建Web服务和Web服务客户端的框架,主要基于Java语言。本文将详细讲解如何使用Axis2来发布Web服务以及如何生成客户端代码来调用这些服务。 首先,让我们了解...

    WebService-Axis2 详细讲解

    WebService-Axis2 详细讲解 WebService是一种基于XML的开放标准,用于在不同的应用程序之间进行通信。它允许不同系统之间的数据交换,打破了平台和语言的界限。Axis2是Apache软件基金会开发的一个高性能、灵活且可...

    axis2客户端调用webService接口,精简jar包

    首先,了解Axis2客户端的基本概念是至关重要的。Axis2客户端是用于与远程Web服务交互的工具,它允许开发者通过SOAP(简单对象访问协议)消息来调用Web服务提供的功能。这个过程通常包括以下几个步骤: 1. **创建...

    部署WebService(eclipse-axis2)

    部署WebService涉及使用Eclipse集成开发环境结合Axis2框架来搭建Web服务。本文将详细介绍如何使用Eclipse 3.5.0 和 Axis2-1.3 版本进行WebService的部署,包括服务端和客户端的构建过程。 #### 二、版本准备 - ...

    webservice的axis2开发

    【WebService的基础知识】 1.1 WebService的定义与作用 WebService是一种按照W3C标准设计的软件系统,旨在实现跨网络的机器间交互操作。...学习AXIS2有助于深入理解WebService开发,并能快速构建实际应用。

    WebService之axis2案例

    通过这个案例,开发者可以学习到如何使用Axis2来创建和消费Web服务,理解Web服务的基本工作原理,以及掌握相关的开发工具和配置技巧。这对于进行跨平台的分布式系统开发是非常有帮助的,特别是在企业级应用集成和B2B...

    axis2-----版本为1.6.2的webservice发布总结。

    描述中提到的“NULL”意味着没有具体的细节,但我们可以从一般的Axis2使用经验中推断。通常,发布一个基于Axis2的Web服务涉及以下步骤: 1. **安装和配置**: 首先,你需要下载并安装Apache Axis2的相应版本。这通常...

    Spring集成axis2实现webservice所用到的包

    4. **部署和发布服务**:如果我们要在Spring中发布一个Web服务,可以使用Axis2的`SpringServiceDeployer`。这需要将服务类和相关的配置文件打包成一个Axis2模块(.aar文件),然后部署到Axis2服务器上。 5. **测试...

    axis2包 使用axis2开发webservice需要的jar包

    描述中提及的例子链接虽然已经失效,但通常它会展示一个基本的Axis2 Web服务开发流程,包括创建服务类、编写服务接口、配置服务描述文件(WSDL,Web Services Description Language)以及部署服务到Axis2服务器。...

    axis2webservice接口例子

    标题中的“axis2webservice接口例子”指的是使用Apache Axis2框架创建的一个Web服务接口实例。Apache Axis2是Java平台上的一款强大的Web服务开发工具,它提供了高效、灵活且可扩展的环境来构建和部署Web服务。这个...

    webservice-axis2

    - **Spring集成**:Axis2与Spring框架紧密集成,这使得开发者可以利用Spring的依赖注入等功能来简化WebService的开发过程。 - **JSON支持**:除了XML之外,Axis2还支持JSON数据格式,使得开发者能够更灵活地处理不同...

    axis2例子 webservice axis2 示例

    axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例

    axis2-WebService-开发指南.docx

    Axis2 WebService 开发指南 Axis2 是一个基于 Java 的开源 WebService 框架,具有高效、灵活、可扩展等特点。...通过本指南,开发者可以快速掌握 Axis2 的开发和使用,实现高效、灵活的 WebService 开发。

Global site tag (gtag.js) - Google Analytics