杰瑞科技汇

Java WebService教程,从入门到实践该学哪些核心内容?

Java WebService 完整教程

目录

  1. 第一部分:基础概念

    Java WebService教程,从入门到实践该学哪些核心内容?-图1
    (图片来源网络,侵删)
    • 什么是 WebService?
    • 为什么需要 WebService?
    • WebService 的核心标准(XML, SOAP, WSDL, UDDI)
    • WebService 的两种主流风格:SOAP vs. REST
  2. 第二部分:传统 SOAP WebService 开发 (JAX-WS)

    • JAX-WS 简介
    • 实践 1:使用 JDK 内置工具开发一个简单的 JAX-WS 服务
    • 实践 2:使用主流框架(如 Spring Boot)开发 JAX-WS 服务
    • 客户端如何调用 JAX-WS 服务
  3. 第三部分:现代 RESTful WebService 开发 (JAX-RS / Spring Boot)

    • REST 架构风格简介
    • JAX-RS 简介 (Java API for RESTful Web Services)
    • 实践 3:使用 Spring Boot 开发 RESTful WebService (这是目前最主流的方式)
    • 实践 4:使用 JAX-RS (如 Jersey) 开发 RESTful WebService
  4. 第四部分:进阶与总结

    • 如何选择 SOAP 还是 REST?
    • WebService 安全性考虑
    • 总结与学习路径

第一部分:基础概念

什么是 WebService?

WebService 是一种跨编程语言、跨操作系统的远程调用技术,它允许不同的应用程序通过网络进行交互,就像调用本地方法一样简单,其核心思想是“服务”,即一个应用程序可以提供一个功能(服务),其他应用程序可以通过网络来调用这个功能。

Java WebService教程,从入门到实践该学哪些核心内容?-图2
(图片来源网络,侵删)

为什么需要 WebService?

  • 系统集成:将不同技术栈(如 Java, .NET, PHP)构建的应用系统连接起来。
  • 跨平台:通信双方无需关心对方的具体实现语言和操作系统。
  • 松耦合:服务提供方和调用方之间通过标准接口(WSDL)进行约定,实现解耦。

WebService 的核心标准

  • XML (eXtensible Markup Language):WebService 的数据交换格式,它是一种平台无关的、自描述的标记语言,非常适合异构系统间的数据传输。
  • SOAP (Simple Object Access Protocol):一种基于 XML 的协议,用于在 Web 上交换结构化的信息,它定义了消息的格式、处理方式以及如何通过 HTTP/SMTP 等协议进行传输,SOAP 消息通常包含一个信封、一个头部和一个体。
  • WSDL (Web Services Description Language):一个 XML 文件,用于描述 WebService 的功能,它就像服务的“说明书”,告诉客户端:
    • 服务的地址在哪里(Endpoint/URL)。
    • 服务提供了哪些方法(Operations)。
    • 每个方法的输入参数是什么(Message)。
    • 每个方法的返回值是什么。
  • UDDI (Universal Description, Discovery, and Integration):一个目录服务,用于发布和发现 WebService,可以把它想象成“WebService 的黄页”,UDDI 的使用已大大减少,更多是直接通过 WSDL 地址来发现服务。

WebService 的两种主流风格:SOAP vs. REST

特性 SOAP (Simple Object Access Protocol) REST (Representational State Transfer)
协议 严格定义的协议,通常基于 XML。 不是协议,而是一种架构风格
数据格式 强制使用 XML。 非常灵活,支持 JSON, XML, HTML, Text 等。JSON 是目前最主流的格式。
标准 有官方标准(W3C)。 无官方标准,依赖于 HTTP 协议。
性能 消息相对“重”,因为需要完整的 SOAP 信封和 XML 解析,性能较低。 消息“轻量”,通常使用 JSON,解析速度快,性能高。
使用场景 企业级应用、金融、电信等对安全性、事务性要求极高的场景。 移动 App 后端、公共 API、微服务架构等互联网应用。
代表技术 JAX-WS (Java) JAX-RS (Java), Spring MVC (Spring Boot)

第二部分:传统 SOAP WebService 开发 (JAX-WS)

JAX-WS 是 Java 官方推出的用于创建 SOAP WebService 的 API。

实践 1:使用 JDK 内置工具开发一个简单的 JAX-WS 服务

这个例子不需要任何第三方库,只需 JDK 6+ 即可。

步骤 1:创建服务端接口和实现

HelloService.java (服务接口)

Java WebService教程,从入门到实践该学哪些核心内容?-图3
(图片来源网络,侵删)
import javax.jws.WebService;
import javax.jws.WebMethod;
// @WebService 注解将一个普通类标记为 WebService 服务
@WebService
public interface HelloService {
    // @WebMethod 注解将一个方法标记为可以被远程调用的方法
    @WebMethod
    String sayHello(String name);
}

HelloServiceImpl.java (服务实现)

import javax.jws.WebService;
// endpointInterface 指定服务的接口
@WebService(endpointInterface = "com.example.webservice.jaxws.HelloService")
public class HelloServiceImpl implements HelloService {
    @Override
    public String sayHello(String name) {
        return "Hello, " + name + "!";
    }
}

步骤 2:发布服务

创建一个 Publisher 类来启动服务。 Publisher.java

import javax.xml.ws.Endpoint;
public class Publisher {
    public static void main(String[] args) {
        // 定义服务的访问地址
        String address = "http://localhost:8888/hello";
        // 创建服务实例
        HelloService helloService = new HelloServiceImpl();
        // 发布服务
        Endpoint.publish(address, helloService);
        System.out.println("Service is published at: " + address);
    }
}

运行 Publisher 类,现在你的 SOAP 服务已经启动了,你可以用浏览器访问 http://localhost:8888/hello?wsdl,会看到生成的 WSDL 文件。

步骤 3:创建客户端

JDK 提供了 wsimport 工具来根据 WSDL 生成客户端代码。

  1. 打开命令行,进入你的项目目录。

  2. 运行命令:

    wsimport -keep -p com.example.webservice.jaxws.client http://localhost:8888/hello?wsdl
    • -keep: 生成源代码。
    • -p: 指定生成的包名。
    • 最后面是 WSDL 的地址。
  3. 命令执行后,会生成一堆 Java 文件(包括 HelloService 接口、HelloServiceImplService 类等)。

  4. 编写客户端代码调用服务: Client.java

    import com.example.webservice.jaxws.client.HelloService;
    import com.example.webservice.jaxws.client.HelloServiceImplService;
    public class Client {
        public static void main(String[] args) {
            // 通过服务工厂类获取服务实例
            HelloServiceImplService service = new HelloServiceImplService();
            // 从服务中获取 Port(即服务的接口)
            HelloService helloPort = service.getHelloServiceImplPort();
            // 调用远程方法
            String result = helloPort.sayHello("WebService World");
            System.out.println("Client received: " + result);
        }
    }

    运行 Client,输出 Client received: Hello, WebService World!


第三部分:现代 RESTful WebService 开发 (JAX-RS / Spring Boot)

REST 目前是构建 WebService 的绝对主流,尤其是在互联网领域,它的核心是资源,通过 HTTP 动词(GET, POST, PUT, DELETE)来对资源进行操作。

实践 3:使用 Spring Boot 开发 RESTful WebService (最推荐)

Spring Boot 极大地简化了 REST 服务的开发,是目前 Java 后端开发的事实标准。

步骤 1:创建 Spring Boot 项目

使用 Spring Initializr 创建一个新项目,选择以下依赖:

  • Spring Web (提供 Web 开发支持,包括 REST)

步骤 2:创建实体类

User.java

public class User {
    private long id;
    private String name;
    private String email;
    // Getters and Setters
    // ... (省略)
}

步骤 3:创建数据访问层 (模拟数据库)

UserRepository.java

import org.springframework.stereotype.Repository;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
@Repository
public class UserRepository {
    private final List<User> users = new ArrayList<>();
    private long nextId = 1;
    public User save(User
分享:
扫描分享到社交APP
上一篇
下一篇