24.3.2. 所需的注解
概述
要从 Java 代码创建服务,您只需要为代码添加一个注解。您必须在 SEI 和实施类上添加 @WebService
注释。
@WebService 注释
@WebService
注释由 javax.jws.WebService 接口定义,它被放置在接口或旨在用作服务的类上。@webService
具有描述的属性 表 24.1 “@WebService
Properties”
属性 | 描述 |
---|---|
指定服务接口的名称。此属性映射到 | |
指定定义服务的目标命名空间。如果没有指定此属性,则目标命名空间会派生自软件包名称。 | |
指定已发布的服务的名称。此属性映射到定义已发布服务的 | |
指定存储服务 WSDL 合同的 URL。这必须使用相对 URL 指定。默认值是部署该服务的 URL。 | |
指定实施类实施的 SEI 的完整名称。仅当属性用于服务实施类时,才会指定此属性。 | |
指定服务发布的端点的名称。此属性映射到 | |
[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) { ... } }