Show Table of Contents
第7章 UDDI アノテーション
7.1. はじめに
従来、管理者が GUI を使って手動で、サービス (BusinessService) とエンドポイント (BindingTemplates) を UDDI Registry に登録していました。残念ながら、こうすると、Registry 内のデータが静的、つまり時間が経つと陳腐化してしまいます。
jUDDI Registry をより動的にするには、デプロイするたびに各エンドポイントを登録すると理にかなうはずです。UDDI アノテーションは、これを行うためだけに設計されています。アプリケーションサーバーにデプロイされる際にサービスを登録します。
アノテーションには UDDIService と UDDIServiceBinding の 2 種類があります。エンドポイントを登録するには、上記の両方を使用する必要があります。
サービスをアンデプロイすると、エンドポイントは UDDI Registry から削除されますが、サービス情報は残ります (エンドポイントがなくてもサービスがあるため、後に確認するよう指示を出すことができるため、Registry にサービスレベルの情報を残すのは理にかなっています)。
注記
サービス情報を削除したい場合、手動で削除する必要があります。
注記
アノテーションは
juddi-client ライブラリを使用します。つまり、これらのアノテーションを使用して、UDDI バージョン 3 レジストリに登録できるということです。
7.2. UDDIService アノテーション
UDDIService アノテーションを使用して、Registry 内にすでにあるビジネスにサービスを登録します。アノテーションは、Java クラスのクラスレベルに追加してください。
表7.1 UDDIService 属性
| 属性 | 説明 | 必須 |
|---|---|---|
| serviceName | サービス名。デフォルトでは、クラークが WebService アノテーションで指定された名前を使用します。 | いいえ |
| description | 人間が解読できるようなサービスの説明 | はい |
| serviceKey | サービスの UDDI v3 キー | はい |
| businessKey | サービスを所有すべきビジネスの UDDI v3 キー (ビジネスは、登録時に Registry に存在している必要があります)。 | はい |
| lang | これは、名前や説明で利用される言語ロケール (省略するとデフォルトの "en" に設定されます)。 | いいえ |
| categoryBag | CategoryBag の定義 | いいえ |
7.3. UDDIServiceBinding アノテーション
UDDIServiceBinding アノテーションを使用して、UDDI Registry に BindingTemplate を登録します (このアノテーションのみでの使用はできません。UDDIService アノテーション内で使用する必要があります)。
表7.2 UDDIServiceBinding 属性
| 属性 | 説明 | 必須 |
|---|---|---|
| bindingKey | ServiceBinding の UDDI v3 キー | はい |
| description | 人間が解読できるようなサービスの説明 | はい |
| accessPointType | UDDI v3 の AccessPointType (省略するとデフォルトの wsdlDeployment になります) | いいえ |
| accessPoint | エンドポイント参照 | はい |
| lang | これは、名前や説明で利用される言語ロケール (省略するとデフォルトの "en" に設定されます)。 | いいえ |
| tModelKeys | コンマ区切りの tModelKeys キー参照 | いいえ |
| categoryBag | CategoryBag の定義 | いいえ |
7.4. WebService の例
サービスを定義するクラスにアノテーションを使用することができます。ここでは、WebService に追加されています (POJO に JAX-WS 'WebService' アノテーションがついています)。
package org.apache.juddi.samples;
import javax.jws.WebService;
import org.apache.juddi.v3.annotations.UDDIService;
import org.apache.juddi.v3.annotations.UDDIServiceBinding;
@UDDIService(
businessKey="uddi:myBusinessKey",
serviceKey="uddi:myServiceKey",
description = "Hello World test service")
@UDDIServiceBinding(
bindingKey="uddi:myServiceBindingKey",
description="WSDL endpoint for the helloWorld Service. This service is used for "
+ "testing the jUDDI annotation functionality",
accessPointType="wsdlDeployment",
accessPoint="http://localhost:8080/juddiv3-samples/services/helloworld?wsdl")
@WebService(
endpointInterface = "org.apache.juddi.samples.HelloWorld",
serviceName = "HelloWorld")
public class HelloWorldImpl implements HelloWorld {
public String sayHi(String text) {
System.out.println("sayHi called");
return "Hello " + text;
}
}
この WebService をデプロイすると、juddi-client コードは、UDDI アノテーションに対してこのクラスをスキャンし、登録プロセスを担当します。
clerk のセクションでは、
org.apache.juddi.samples.HelloWorldImpl サービスクラスに参照する必要があります。
<clerk name="BobCratchit" node="default" publisher="sales" password="sales">
<class>org.apache.juddi.samples.HelloWorldImpl</class>
</clerk>
このコードは、ボブが default という名前のノードの接続設定を使用しており、sales publisher (このパスワードは sales) を使用する予定であると記述しています。
注記
データソースの定義方法に似ています。
7.5. CategoryBag 属性
CategoryBag 属性を使用して、tModels を参照します。以下に CategoryBag の例を示しています。
<categoryBag>
<keyedReference tModelKey="uddi:uddi.org:categorization:types"
keyName="uddi-org:types:wsdl" keyValue="wsdlDeployment" />
<keyedReference tModelKey="uddi:uddi.org:categorization:types"
keyName="uddi-org:types:wsdl2" keyValue="wsdlDeployment2" />
</categoryBag>
以下のように追加できます。
categoryBag="keyedReference=keyName=uddi-org:types:wsdl;keyValue=wsdlDeployment;" +
"tModelKey=uddi:uddi.org:categorization:types," +
"keyedReference=keyName=uddi-org:types:wsdl2;keyValue=wsdlDeployment2;" +
"tModelKey=uddi:uddi.org:categorization:types2",

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.