24.2. 创建 SEI
概述
服务端点接口 (SEI)是服务实施和在该服务上发出请求的用户之间共享的 Java 代码片段。SEI 定义服务实施的方法,并提供了有关如何公开该服务作为端点的详细信息。从 WSDL 合同开始,SEI 由代码生成器生成。但是,从 Java 开始时,开发人员负责创建 SEI。 创建 SEI 有两个基本模式:
绿色字段开发 - 在这个模式中,您要在不现有的 Java 代码或 WSDL 的情况下开发新服务。最好先创建 SEI。然后,您可以将 SEI 分发到负责实施使用 SEI 的服务供应商和消费者的任何开发人员。
注意进行绿色字段服务开发的建议方法是,创建定义服务及其接口的 WSDL 合同。请参阅 第 26 章 开始点 WSDL 合同。
服务启用 - 在这个模式中,您通常具有一组现有功能,它们作为 Java 类实施,您希望服务启用它。这意味着您必须执行两个操作:
- 创建一个 SEI,它只包含将要作为服务一部分公开的操作。
修改现有 Java 类,使其实施 SEI。
注意虽然您可以将 JAX-WS 注释添加到 Java 类,但不推荐这样做。
编写接口
SEI 是一个标准 Java 接口。它定义类实施的一组方法。它还可以定义多个成员字段,并持续实施类有权访问。
如果是 SEI,定义的方法旨在映射到服务公开的操作。SEI 对应于 wsdl:portType
元素。SEI 定义的方法对应于 wsdl:portType
元素中的 wsdl:operation
元素。
JAX-WS 定义了一个注释,允许您指定没有作为服务的一部分公开的方法。但是,最佳实践是将这些方法离开 SEI。
例 24.1 “简单 SEI” 显示了用于库存更新服务的简单 SEI。
例 24.1. 简单 SEI
package com.fusesource.demo; public interface quoteReporter { public Quote getQuote(String ticker); }
实施接口
由于 SEI 是标准 Java 接口,因此实施它的类是标准 Java 类。如果从 Java 类开始,您必须修改它才能实现接口。如果您从 SEI 开始,实施类会实施 SEI。
例 24.2 “简单实施类” 显示了在 例 24.1 “简单 SEI” 中实现接口的类。
例 24.2. 简单实施类
package com.fusesource.demo; import java.util.*; public class stockQuoteReporter implements quoteReporter { ... public Quote getQuote(String ticker) { Quote retVal = new Quote(); retVal.setID(ticker); retVal.setVal(Board.check(ticker));[1] Date retDate = new Date(); retVal.setTime(retDate.toString()); return(retVal); } }