この章では、プロファイル・サービスAPIを使用してカスタム・プロファイル・プロバイダを開発する方法について説明します。内容は次のとおりです。
Oracle WebLogic Server SIP Containerにはプロファイル・サービスAPI com.bea.wcp.profile.API
が含まれており、これには複数のプロファイル・サービス・プロバイダの実装が含まれています。プロファイル・プロバイダは、定義されたプロトコルを使用してデータ・リポジトリからXMLドキュメントへのアクセスを実行します。デプロイ済のSIPサーブレットやその他のアプリケーションが、基盤のプロトコルについて、またはドキュメントが保存されているデータ・リポジトリについて認識している必要はありません。カスタムURLを使用してプロファイル・データが参照されると、Oracle WebLogic Server SIP Containerはリクエストの処理を正しいプロファイル・プロバイダに任せます。
プロバイダは、ドキュメントを操作するのに必要なプロトコル処理を実行します。すべてのプロバイダはXML DOM形式でドキュメントを処理するため、クライアント・コードは、様々なタイプのプロファイル・データを共通の方法で処理することができます。
APIを使用して実装された各プロファイル・プロバイダには、プロファイル・データに対して次の操作が可能になります。
新しいドキュメントの作成
既存のドキュメントの問合せと更新
ドキュメントの削除
プロファイル・ドキュメントの変更の通知を受信するためのサブスクリプションの管理
プロファイル・プロバイダを使用するクライアントは、サーブレット・コンテキスト属性を通じてプロファイル・サービス・インスタンスを取得します。次に、適切なURLを確立し、利用できる1つのプロファイル・サービスAPIでこのURLを使用してプロファイル・データを処理します。プロファイル・プロバイダの構成と組み合されたURLのコンテンツは、Oracle WebLogic Server SIP Containerのプロバイダの実装を決定してクライアントのリクエストを処理します。
以下の項では、カスタム・プロファイル・プロバイダにプロファイル・サービスAPIインタフェースを実装する方法について説明します。
カスタム・プロファイル・プロバイダは、エンジン層クラスタにデプロイされた共有のJava EEライブラリ(一般的に単純なJARファイル)として実装されます。プロバイダJARファイルには、少なくともcom.bea.wcp.profile.ProfileServiceSpi
を実装するクラスが含まれる必要があります。このインタフェースは、com.bea.wcp.profile.ProfileService
からメソッドを継承し、プロバイダの登録と未登録で呼び出される新しいメソッドを定義します。
プロバイダ実装に加え、プロバイダがプロファイル・データの更新についてサブスクリプション・ベースの通知をサポートする場合、com.bea.wcp.profile.ProfileSubscription
インタフェースを実装する必要があります。プロファイル・ドキュメントが変更されると、ProfileSubscription
がクライアント・サブスクライバに返されます。
Oracle Fusion Middleware WebLogic Server APIリファレンスに、プロファイル・サービスAPIの各メソッドについて詳しく説明されています。プロファイル・サービス・インタフェースを実装するときには、次の注意点とベスト・プラクティスに留意する必要があります。
putDocument
、getDocument
とdeleteDocument
メソッドには、それぞれ2つの個別メソッド・シグネチャがあります。メソッドの基本的なバージョンは、処理が行われるドキュメント・セレクタだけを渡します。別のメソッド・シグネチャは、リクエスタについて明示的な情報が必要となるプロトコルに対してリクエストの送信者のアドレスも渡します。
subscribe
メソッドには、送信者のアドレスを渡すために、そして、時間ベースのサブスクリプションをサポートするために、複数のメソッド・シグネチャがあります。
com.bea.wcp.profile.ProfileServiceSpi
にメソッドを実装しない場合は、OperationNotSupportedExceptionをスローする「no-op」メソッドをインクルードします。
com.bea.wcp.profile.ProfileServiceSpi
は、登録と未登録で呼び出されるプロバイダ・メソッドを定義します。プロバイダはデータ・ストアに接続を作成したり、register
メソッドにおいて必要な初期化を実行できます。register
メソッドは、ProviderBean
インスタンスも提供します。このインスタンスには、profile.xml
においてプロバイダの構成要素で構成されたコンテキスト・パラメータが含まれています。
unregister
メソッドの場合、プロバイダはバッキング・ストア接続をリリースし、保持している状態を消去する必要があります。
デプロイされた他のすべてのアプリケーションが実装にアクセスできる必要があるため、プロバイダは共有Java EEライブラリとしてデプロイされる必要があります。
ほとんどのプロファイル・プロバイダに対して、実装クラスをJARファイルに簡単にパッケージ化できます。その後、Oracle WebLogic Server SIP Containerにライブラリを登録します。
プロバイダをライブラリとしてインストールした後、profile.xml
ファイルでプロバイダ・クラスをプロバイダとして識別する必要があります。name
要素は、プロバイダ構成を一意に識別し、class
要素は、プロファイル・サービスAPIインタフェースを実装するJavaクラスを識別します。プロバイダには1つまたは複数のコンテキスト・パラメータを定義でき、register
メソッドの場合、これらが実装クラスに配信されます。たとえば、コンテキスト・パラメータは、プロファイル・データを取得するバッキング・ストアの識別に使用できます。
例10-1は、XCAPを使用してデータにアクセスするプロバイダの構成サンプルを示しています。
例10-1 profile.xmlでのプロバイダ・マッピング
<profile-service xmlns="http://www.bea.com/ns/wlcp/wlss/profile/300" xmlns:sec="http://www.bea.com/ns/weblogic/90/security" xmlns:xsi="http://www.w3.org/2001/XMLSchema=instance" xmlns:wls="http;//www.bea.com/ns/weblogic/90/security/wls"> <mapping> <map-by>provider-name</map-by> </mapping> <provider> <name>xcap</name> <provider-class>com.mycompany.profile.XcapProfileProvider</provider-class> <param> <name>server</name> <value>example.com</name> </param> ... </provider> </profile-service>
アプリケーションがプロファイルAPIを使用してリクエストを実行する場合、Oracle WebLogic Server SIP Containerは、そのリクエストを処理するために対応するプロバイダを見つける必要があります。デフォルトでは、Oracle WebLogic Server SIP Containerは、profile.xml
に定義されたプロバイダname
要素に対して、リクエストされたURLの接頭辞をマップします。たとえば、例10-1に示した基本的な構成では、Oracle WebLogic Server SIP Containerは、xcap://
で始まるプロファイルAPIリクエストをプロバイダ・クラスcom.mycompany.profile.XcapProfileProviderにマップします。
または、名前を付けた各プロバイダに対応する接頭辞をまとめた>profile.xml
にあるmapping
エントリを定義できます。例10-2は、2つの代替接頭辞を使ったマッピングを示しています。
例10-2 複数の接頭辞へのプロバイダのマッピング
... <mapping> <map-by>prefix</map-by> <provider> <provider-name>xcap</provider-name> <doc-prefix>sip</doc-prefix> <doc-prefix>subscribe</doc-prefix> </provider> <by-prefix> <mapping> ...
Profile.xml
の明示的なマッピング機能が不十分な場合は、com.bea.wcp.sip.profile.profilerouterインタフェースを実装するカスタム・マッピング・クラスを作成し、そのクラスをmap-by-router
要素で識別できます。例10-3は、構成の例を示しています。
profile.xml
ファイルを作成または変更するために、オプションで管理コンソールを使用できます。この場合、ドメインに対してconfig.xml
ファイルのプロファイル・プロバイダ・コンソール拡張を有効化する必要があります。
例10-4 config.xmlでのプロファイル・サービス・リソースの有効化
... <custom-resource> <name>ProfileService</name> <target>AdminServer</target> <descriptor-file-name>custom/profile.xml</descriptor-file-name> <resource-class>com.bea.wcp.profile.descriptor.resource.ProfileServiceResource</resource-class> <descriptor-bean-class>com.bea.wcp.profile.descriptor.beans.ProfileServiceBean</descriptor-bean-class> </custom-resource> </domain>
プロファイル・プロバイダ拡張は、コンソールの左ペインでSipServerノードの下に表示されます。このプロファイル・プロバイダ拡張で新しいプロバイダ・クラスとマッピング動作の構成を実行することができます。