24.3.2. 必需的注解
概述
要从 Java 代码创建服务,您只需要向代码添加一个注解。您必须在 SEI 和实施类中添加 @WebService
注释。
@WebService 注解
@WebService
注释由 javax.jws.WebService 接口定义,它被放在接口或要用作服务的类中。@webService
具有中描述的属性 表 24.1 “@webService
属性”
表 24.1. @webService
属性
属性 | 描述 |
---|---|
指定服务接口的名称。此属性映射到 | |
指定定义该服务的目标命名空间。如果没有指定此属性,则目标命名空间派生自软件包名称。 | |
指定已发布的服务的名称。此属性映射到定义所发布服务的 | |
指定存储服务的 WSDL 合同的 URL。这必须使用一个相对 URL 指定。默认为部署该服务的 URL。 | |
指定实施类实施的 SEI 的完整名称。仅在服务实施类中使用 属性时指定此属性。 | |
指定发布该服务的端点的名称。此属性映射到 | |
[a]
从 SEI 生成 WSDL 时,会使用接口名称来代替实施类名称。
|
不需要为任何 @WebService
注释的属性提供值。但是,建议您提供尽可能多的信息。
为 SEI 标注
SEI 要求您添加 @WebService
注释。由于 SEI 是定义服务的合同,所以您应该在 @WebService
注释的属性中指定服务尽可能多的详细信息。
例 24.3 “带有 @WebService
注解的接口” 显示 例 24.1 “simple 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 合同。
指定定义公开该服务的 端点的
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) { ... } }