杰瑞科技汇

Axis2教程,如何快速上手开发WebService?

目录

  1. 第一部分:基础概念

    Axis2教程,如何快速上手开发WebService?-图1
    (图片来源网络,侵删)
    • 什么是 WebService?
    • 什么是 Axis2?
    • Axis2 的核心架构
  2. 第二部分:环境准备

    • 安装 JDK
    • 下载并配置 Axis2
    • 验证安装
  3. 第三部分:创建第一个 WebService (Server 端)

    • 使用 POJO (Plain Old Java Object) - 最简单
      • 创建 Java 类
      • 部署服务
      • 测试服务
    • 使用 Axis2 DataBinding (ADB) - 更规范
      • 创建服务接口和实现类
      • 使用 WSDL2Java 生成服务端骨架代码
      • 修改并部署服务
  4. 第四部分:调用 WebService (Client 端)

    • 使用 WSDL2Java 生成客户端代码
      • 生成客户端代码
      • 编写客户端调用程序
    • 使用 Axis2 的 API 动态调用 (不生成客户端代码)

      编写动态调用客户端

      Axis2教程,如何快速上手开发WebService?-图2
      (图片来源网络,侵删)
  5. 第五部分:进阶主题

    • 处理复杂类型(如自定义对象、List)
    • 传输附件 (MTOM)
    • 安全性 (WS-Security)

第一部分:基础概念

什么是 WebService?

WebService 是一种跨编程语言、跨操作系统平台的远程调用技术,它基于一系列标准协议(如 XML, SOAP, WSDL, HTTP),使得不同系统之间能够以标准化的方式进行通信和数据交换。

  • SOAP (Simple Object Access Protocol):WebService 的通信协议,消息格式基于 XML。
  • WSDL (Web Services Description Language):WebService 的“说明书”,使用 XML 描述服务提供的方法、参数、返回值等信息。
  • UDDI (Universal Description, Discovery, and Integration):WebService 的“注册中心”,服务提供者在此注册服务,服务使用者在此查找服务。(现在用得较少)

什么是 Axis2?

Axis2 是 Apache 组织推出的一个开源 WebService 引擎,它是 Axis1.x 的后续版本,在架构和性能上都有巨大提升。

  • 核心优势
    • 高性能:采用异步和非阻塞的 I/O 模型。
    • 模块化:核心功能与扩展功能分离,易于扩展。
    • 数据绑定灵活:支持 ADB (Axis2 Data Binding)、XMLBeans、JiBX 等多种数据绑定框架。
    • 支持 REST:除了传统的 SOAP,Axis2 也支持 RESTful 风格的 WebService。
    • 强大的工具支持:提供了 WSDL2JavaJava2WSDL 等命令行工具,极大简化了开发。

Axis2 的核心架构

Axis2 的架构主要分为几个层次:

  • Transport (传输层):处理与底层协议(如 HTTP, SMTP)的交互。
  • SOAP Processing (SOAP 处理层):负责 SOAP 消息的构建、解析和处理。
  • Message Processing (消息处理层):包含 Handler 链,用于处理消息(如日志、安全等)。
  • Core (核心层):包含 Engine,是 Axis2 的核心,负责协调整个服务调用过程。
  • Description (描述层):包含 ServiceModule 的元数据,通常由 services.xml 文件定义。

第二部分:环境准备

安装 JDK

Axis2 是基于 Java 的,所以需要安装 JDK,推荐使用 JDK 8 或更高版本。

  • 下载并安装 JDK。
  • 配置 JAVA_HOME 环境变量。
  • 验证安装:在命令行输入 java -version

下载并配置 Axis2

  • 下载:访问 Axis2 官方下载页面,下载 "Binary Distribution" 版本,axis2-1.7.9-war.zip
  • 配置
    1. 解压下载的 ZIP 文件。
    2. 你会看到一个 axis2.war 文件,这是一个标准的 Web 应用归档文件。
    3. axis2.war 文件复制到你的 Web 服务器(如 Tomcat, Jetty)的 webapps 目录下。
    4. 启动 Web 服务器,Tomcat 会自动解压 axis2.war
    5. 打开浏览器,访问 http://localhost:8080/axis2/,如果看到 Axis2 的欢迎页面,说明部署成功。

验证安装

在 Axis2 的欢迎页面,点击 "Validate" 链接,它会自动检查你的环境配置并给出报告,如果所有项目都显示 "OK",恭喜你,环境已经完全准备好了!


第三部分:创建第一个 WebService (Server 端)

我们将创建一个简单的 HelloService,它提供一个 sayHello 方法,接收一个名字,返回 "Hello, [name]!"。

使用 POJO (最简单,推荐初学者)

这种方式最直接,不需要复杂的配置。

  1. 创建 Java 类 创建一个普通的 Java 类,它将被作为 WebService 发布。

    // src/com/example/HelloService.java
    package com.example;
    public class HelloService {
        public String sayHello(String name) {
            if (name == null || name.trim().isEmpty()) {
                return "Hello, Stranger!";
            }
            return "Hello, " + name + "!";
        }
    }
  2. 部署服务 Axis2 可以非常方便地部署 POJO。

    • 在你的项目目录下,创建一个文件夹,my-service
    • HelloService.class 文件复制到 my-service 文件夹中。
    • my-service 文件夹中,创建一个名为 META-INF 的文件夹。
    • META-INF 文件夹中,创建一个名为 services.xml 的文件。

    services.xml 内容如下:

    <!-- my-service/META-INF/services.xml -->
    <service name="HelloService">
        <description>
            A simple Hello World service.
        </description>
        <parameter name="ServiceClass">com.example.HelloService</parameter>
        <!-- 暴露的operation -->
        <operation name="sayHello">
            <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
        </operation>
    </service>
    • name: 服务的名称。

    • ServiceClass: 你 Java 类的全限定名。

    • operation: 指定要暴露的方法,RPCMessageReceiver 用于处理 RPC 风格的调用。

    • 将整个 my-service 文件夹打包成一个 .aar (Axis2 Archive) 文件,可以使用 jar 命令:

      jar -cvf HelloService.aar -C my-service .

      这会在当前目录下生成 HelloService.aar 文件。

    • 部署 AAR 文件

      • HelloService.aar 文件复制到 Tomcat 的 webapps/axis2/WEB-INF/services 目录下。
      • 重启 Tomcat,或者访问 http://localhost:8080/axis2/,点击 "Administer" 链接(需要用户名/密码,默认是 admin/axis2),在 "Upload Service" 页面上传你的 AAR 文件。
  3. 测试服务

    • 访问 http://localhost:8080/axis2/
    • 在左侧导航栏中点击 "Services"。
    • 你应该能看到 "HelloService" 已经列出来了。
    • 点击 "HelloService",进入服务的测试页面。
    • 点击 sayHello 操作,在 "sayHello" 标签页下,输入你的名字("World"),然后点击 "Invoke" 按钮。
    • 页面下方会显示 SOAP 请求和响应,你应该能看到返回的 XML 结果:<ns:sayHelloResponse><ns:return>Hello, World!</ns:return></ns:sayHelloResponse>

使用 Axis2 DataBinding (ADB)

这种方法更规范,适合构建复杂的服务,并且可以利用 Axis2 的工具生成代码。

  1. 创建服务接口和实现类 先定义一个接口,再写实现类。

    //
分享:
扫描分享到社交APP
上一篇
下一篇