目录
-
第一部分:基础概念
(图片来源网络,侵删)- 什么是 WebService?
- 什么是 Axis2?
- Axis2 的核心架构
-
第二部分:环境准备
- 安装 JDK
- 下载并配置 Axis2
- 验证安装
-
第三部分:创建第一个 WebService (Server 端)
- 使用 POJO (Plain Old Java Object) - 最简单
- 创建 Java 类
- 部署服务
- 测试服务
- 使用 Axis2 DataBinding (ADB) - 更规范
- 创建服务接口和实现类
- 使用
WSDL2Java生成服务端骨架代码 - 修改并部署服务
- 使用 POJO (Plain Old Java Object) - 最简单
-
第四部分:调用 WebService (Client 端)
- 使用 WSDL2Java 生成客户端代码
- 生成客户端代码
- 编写客户端调用程序
- 使用 Axis2 的 API 动态调用 (不生成客户端代码)
编写动态调用客户端
(图片来源网络,侵删)
- 使用 WSDL2Java 生成客户端代码
-
第五部分:进阶主题
- 处理复杂类型(如自定义对象、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。
- 强大的工具支持:提供了
WSDL2Java和Java2WSDL等命令行工具,极大简化了开发。
Axis2 的核心架构
Axis2 的架构主要分为几个层次:
- Transport (传输层):处理与底层协议(如 HTTP, SMTP)的交互。
- SOAP Processing (SOAP 处理层):负责 SOAP 消息的构建、解析和处理。
- Message Processing (消息处理层):包含
Handler链,用于处理消息(如日志、安全等)。 - Core (核心层):包含
Engine,是 Axis2 的核心,负责协调整个服务调用过程。 - Description (描述层):包含
Service和Module的元数据,通常由services.xml文件定义。
第二部分:环境准备
安装 JDK
Axis2 是基于 Java 的,所以需要安装 JDK,推荐使用 JDK 8 或更高版本。
- 下载并安装 JDK。
- 配置
JAVA_HOME环境变量。 - 验证安装:在命令行输入
java -version。
下载并配置 Axis2
- 下载:访问 Axis2 官方下载页面,下载 "Binary Distribution" 版本,
axis2-1.7.9-war.zip。 - 配置:
- 解压下载的 ZIP 文件。
- 你会看到一个
axis2.war文件,这是一个标准的 Web 应用归档文件。 - 将
axis2.war文件复制到你的 Web 服务器(如 Tomcat, Jetty)的webapps目录下。 - 启动 Web 服务器,Tomcat 会自动解压
axis2.war。 - 打开浏览器,访问
http://localhost:8080/axis2/,如果看到 Axis2 的欢迎页面,说明部署成功。
验证安装
在 Axis2 的欢迎页面,点击 "Validate" 链接,它会自动检查你的环境配置并给出报告,如果所有项目都显示 "OK",恭喜你,环境已经完全准备好了!
第三部分:创建第一个 WebService (Server 端)
我们将创建一个简单的 HelloService,它提供一个 sayHello 方法,接收一个名字,返回 "Hello, [name]!"。
使用 POJO (最简单,推荐初学者)
这种方式最直接,不需要复杂的配置。
-
创建 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 + "!"; } } -
部署服务 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 文件。
- 将
- 在你的项目目录下,创建一个文件夹,
-
测试服务
- 访问
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 的工具生成代码。
-
创建服务接口和实现类 先定义一个接口,再写实现类。
//
