24.3.2. 必要なアノテーション
概要
Java コードからサービスを作成するには、コードに 1 つのアノテーションを追加するだけで済みます。@WebService
アノテーションを SEI と実装クラスの両方に追加する必要があります。
@WebService アノテーション
@WebService
アノテーションは javax.jws.WebService インターフェイスによって定義され、サービスとして使用されるインターフェイスまたはクラスに配置されます。@WebService
には、表24.1「@WebService
プロパティー」 で説明されているプロパティーがあります。
プロパティー | 説明 |
---|---|
サービスインターフェイスの名前を指定します。このプロパティーは、WSDL コントラクトのサービスのインターフェイスを定義する | |
サービスが定義されているターゲット名前空間を指定します。このプロパティーが指定されていない場合、ターゲット名前空間はパッケージ名から派生します。 | |
公開されたサービスの名前を指定します。このプロパティーは、公開されたサービスを定義する | |
サービスの WSDL コントラクトが保存されている URL を指定します。これは、相対 URL を使用して指定する必要があります。デフォルトは、サービスがデプロイされている URL です。 | |
実装クラスが実装する SEI のフルネームを指定します。このプロパティーは、属性がサービス実装クラスで使用される場合にのみ指定されます。 | |
サービスが公開されるエンドポイントの名前を指定します。このプロパティーは、公開されたサービスのエンドポイントの詳細を指定する | |
[a]
SEI から WSDL を生成する場合、実装クラスの名前の代わりにインターフェイスの名前が使用されます。
|
@WebService
アノテーションのプロパティーに値を指定する必要はありません。ただし、できるだけ多くの情報を提供することをお勧めします。
SEI に注釈を付ける
SEI では、@WebService
アノテーションを追加する必要があります。SEI はサービスを定義するコントラクトなので、@WebService
アノテーションのプロパティーにサービスの詳細をできるだけ多く指定する必要があります。
例24.3「@WebService
アノテーションあるインターフェイス」は、@WebService
アノテーションにより 例24.1「シンプルな SEI」 で定義したインターフェイスを示しています。
例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
要素の name
の値が updateQuoteService
であることを指定します。
サービスが WSDL コントラクトを http:\\demos.redhat.com\quoteExampleService?wsdl で公開することを指定します。
サービスを公開するエンドポイントを定義する wsdl:port
要素の name
属性の値が updateQuotePort
であることを指定します。
サービス実装に注釈を付ける
また、SEI に @WebService
アノテーションを付ける必要があります。また、サービス実装クラスに @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) { ... } }