ヘッダーをスキップ
Oracle® WebLogic Server SIP Container開発者ガイド
11g リリース1(11.1.1)
B61430-01
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

10 カスタム・プロファイル・サービス・プロバイダの開発

この章では、プロファイル・サービスAPIを使用してカスタム・プロファイル・プロバイダを開発する方法について説明します。内容は次のとおりです。

10.1 プロファイル・サービスAPIの概要

Oracle WebLogic Server SIP Containerにはプロファイル・サービスAPI com.bea.wcp.profile.APIが含まれており、これには複数のプロファイル・サービス・プロバイダの実装が含まれています。プロファイル・プロバイダは、定義されたプロトコルを使用してデータ・リポジトリからXMLドキュメントへのアクセスを実行します。デプロイ済のSIPサーブレットやその他のアプリケーションが、基盤のプロトコルについて、またはドキュメントが保存されているデータ・リポジトリについて認識している必要はありません。カスタムURLを使用してプロファイル・データが参照されると、Oracle WebLogic Server SIP Containerはリクエストの処理を正しいプロファイル・プロバイダに任せます。

プロバイダは、ドキュメントを操作するのに必要なプロトコル処理を実行します。すべてのプロバイダはXML DOM形式でドキュメントを処理するため、クライアント・コードは、様々なタイプのプロファイル・データを共通の方法で処理することができます。

図10-1 プロファイル・サービスAPIとプロバイダの実装

プロファイル・サービス
「図10-1 プロファイル・サービスAPIとプロバイダの実装」の説明

APIを使用して実装された各プロファイル・プロバイダには、プロファイル・データに対して次の操作が可能になります。

プロファイル・プロバイダを使用するクライアントは、サーブレット・コンテキスト属性を通じてプロファイル・サービス・インスタンスを取得します。次に、適切なURLを確立し、利用できる1つのプロファイル・サービスAPIでこのURLを使用してプロファイル・データを処理します。プロファイル・プロバイダの構成と組み合されたURLのコンテンツは、Oracle WebLogic Server SIP Containerのプロバイダの実装を決定してクライアントのリクエストを処理します。

以下の項では、カスタム・プロファイル・プロバイダにプロファイル・サービスAPIインタフェースを実装する方法について説明します。

10.2 プロファイル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の各メソッドについて詳しく説明されています。プロファイル・サービス・インタフェースを実装するときには、次の注意点とベスト・プラクティスに留意する必要があります。

com.bea.wcp.profile.ProfileServiceSpiは、登録と未登録で呼び出されるプロバイダ・メソッドを定義します。プロバイダはデータ・ストアに接続を作成したり、registerメソッドにおいて必要な初期化を実行できます。registerメソッドは、ProviderBeanインスタンスも提供します。このインスタンスには、profile.xmlにおいてプロバイダの構成要素で構成されたコンテキスト・パラメータが含まれています。

unregisterメソッドの場合、プロバイダはバッキング・ストア接続をリリースし、保持している状態を消去する必要があります。

10.3 プロファイル・プロバイダの構成とパッケージ化

デプロイされた他のすべてのアプリケーションが実装にアクセスできる必要があるため、プロバイダは共有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>

10.3.1 プロファイル・プロバイダへのプロファイル・リクエストのマッピング

アプリケーションがプロファイル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は、構成の例を示しています。

例10-3 カスタム・マッピング・クラスの使用

...
<mapping>
   <map-by-router>
      <class>com.bea.wcp.profile.ExampleRouter</class>
   </map-by-router>
</mapping>
...

10.4 管理コンソールを使用したプロファイル・プロバイダの構成

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ノードの下に表示されます。このプロファイル・プロバイダ拡張で新しいプロバイダ・クラスとマッピング動作の構成を実行することができます。