24.3.2. 所需的注解


概述

要从 Java 代码创建服务,您只需要为代码添加一个注解。您必须在 SEI 和实施类上添加 @WebService 注释。

@WebService 注释

@WebService 注释由 javax.jws.WebService 接口定义,它被放置在接口或旨在用作服务的类上。@webService 具有描述的属性 表 24.1 “@WebService Properties”

表 24.1. @WebService Properties
属性描述

name

指定服务接口的名称。此属性映射到 wsdl:portType 元素的 name 属性,用于定义 WSDL 合同中的服务接口。默认为将 PortType 附加到实现类的名称。 [a]

targetNamespace

指定定义服务的目标命名空间。如果没有指定此属性,则目标命名空间会派生自软件包名称。

serviceName

指定已发布的服务的名称。此属性映射到定义已发布服务的 wsdl:service 元素的 name 属性。默认为使用服务实施类的名称。

wsdlLocation

指定存储服务 WSDL 合同的 URL。这必须使用相对 URL 指定。默认值是部署该服务的 URL。

endpointInterface

指定实施类实施的 SEI 的完整名称。仅当属性用于服务实施类时,才会指定此属性。

portName

指定服务发布的端点的名称。此属性映射到 wsdl:port 元素的 name 属性,用于指定已发布服务的端点详细信息。默认为服务实施类的名称中添加 Port

[a] 从 SEI 生成 WSDL 时,会使用接口名称代替实施类的名称。
注意

不需要为任何 @WebService 注释的属性提供值。但是,建议您提供尽可能多的信息。

注解 SEI

SEI 要求您添加 @WebService 注释。由于 SEI 是定义服务的合同,因此您应在 @WebService 注释的属性中指定服务尽可能多的详细信息。

例 24.3 “带有 @WebService 注释的接口” 显示 例 24.1 “简单 SEI” 中定义的接口,带有 @WebService 注释。

例 24.3. 带有 @WebService 注释的接口

package com.fusesource.demo;

import javax.jws.*;

@WebService(name="quoteUpdater",
            targetNamespace="http:\\demos.redhat.com",
	        serviceName="updateQuoteService",
            wsdlLocation="http:\\demos.redhat.com\quoteExampleService?wsdl",
            portName="updateQuotePort")
public interface quoteReporter
{
  public Quote getQuote(String ticker);
}

例 24.3 “带有 @WebService 注释的接口” 中的 @WebService 注释如下:

指定定义服务接口的 wsdl:portType 元素的 name 属性的值为 quoteUpdater

指定服务的目标命名空间是 http:\\demos.redhat.com

指定定义已发布服务的 wsdl:service 元素 的名称 值为 updateQuoteService

指定该服务将在 http:\\demos.redhat.com\quoteExampleService?wsdl 上发布其 WSDL 合同。

指定定义服务所公开的端点的 wsdl:port 元素的 name 属性的值是 updateQuotePort

为服务实施添加注解

除了使用 @WebService 注释注解 SEI 外,还必须使用 @WebService 注释给服务实施类标注。在服务实施类中添加注解时,您只需要指定 endpointInterface 属性。如 例 24.4 “注解的服务实施类” 所示,属性必须设置为 SEI 的完整名称。

例 24.4. 注解的服务实施类

package org.eric.demo;

import javax.jws.*;

@WebService(endpointInterface="com.fusesource.demo.quoteReporter")
public class stockQuoteReporter implements quoteReporter
{
public Quote getQuote(String ticker)
  {
  ...
  }
}
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.