24.2. 创建 SEI

概述

服务端点接口 (SEI)是服务实施与在该服务上发出请求的消费者之间共享的 Java 代码。SEI 定义服务实施的方法,并提供了有关如何将服务公开为端点的详细信息。从 WSDL 合同开始时,SEI 由代码生成器生成。但是,从 Java 开始,开发人员负责创建 SEI。 创建 SEI 的基本模式有两个:

  • 绿色字段开发 - 在这个模式中,您要开发没有现有 Java 代码或 WSDL 的新服务。最先创建 SEI。然后,您可以将 SEI 分发给负责实施使用 SEI 的服务供应商和消费者的任何开发人员。

    注意

    推荐使用绿色字段服务开发的方法是创建一个定义服务及其接口的 WSDL 合同。请参阅 第 26 章 开始点 WSDL 合同

  • 服务启用 - 在这个模式中,您通常具有作为 Java 类实施的现有功能集,并且您要启用该服务。这意味着您必须执行两个操作:

    1. 创建一个 SEI,它只包含作为服务的一部分公开的操作。
    2. 修改现有的 Java 类,以便其实现 SEI。

      注意

      虽然您可以将 JAX-WS 注释添加到 Java 类,但不建议这样做。

编写接口

SEI 是一个标准 Java 接口。它定义一组类实施的方法。它还可定义多个成员字段以及实施类可访问的常量。

如果是 SEI,定义的方法旨在映射到服务所公开的操作。SEI 与 wsdl:portType 元素对应。SEI 定义的方法与 wsdl:portType 元素中的 wsdl:operation 元素对应。

注意

JAX-WS 定义了一个注释,允许您指定不作为服务一部分公开的方法。但是,最好的做法是将这些方法从 SEI 离开。

例 24.1 “simple SEI” 显示用于库存更新服务的简单 SEI。

例 24.1. simple SEI

package com.fusesource.demo;

public interface quoteReporter
{
  public Quote getQuote(String ticker);
}

实现接口

由于 SEI 是一个标准 Java 接口,因此实施它的类是标准 Java 类。如果从 Java 类开始,您必须修改才能实施接口。如果使用 SEI 启动,则实施类将实施 SEI。

例 24.2 “简单的实施类” 显示在 例 24.1 “simple 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);
  }
}


[1] Board is an assumed class whose implementation is left to the reader.