Example.com の給与部門は給与データを SQL データベースに保存しています。データベースには、employee テーブルと salary テーブルの 2 つのテーブルがあります。Example.com には、このデータへのアクセスを必要とする LDAP クライアントアプリケーションがあります。クライアントアプリケーションは SQL データが LDAP データのように見えることを必要としています。
次の図は、クライアントアプリケーションの要件を示しています。
このアプリケーション要件を満たすために、SQL テーブル内の列を LDAP 属性にマップする JDBC データビューが作成されます。
わかりやすいように、ここで使用するコマンドは次の情報を前提としています。
Directory Proxy Server インスタンスはローカルホスト上のデフォルト LDAP ポート (389) で実行されている。
Directory Proxy Server インスタンスは、/local/myDPS にある。
プロキシマネージャーのパスワードを含むファイルへのパスは、変数 LDAP_ADMIN_PWF として設定されている。Directory Proxy Server 環境変数の設定の詳細については、『Sun Java System Directory Server Enterprise Edition 6.1 Installation Guide』の「Environment Variables」を参照してください。
SQL データベースが起動して実行中である。
JAVA_HOME 変数が正しい Java パスに設定されている。
SQL データベースへのパスワードは、myPasswordFile ファイルに格納された myPassword である。
給与データベース用の JDBC データソースを作成します。
$ dpconf create-jdbc-data-source -b payrollsqldb \ -B jdbc:payrollsqldb:payrollsql://localhost/ \ -J file://payrollsqldb.jar \ -S org.payrollsqldb.jdbcDriver payroll-src
SQL データベースのプロパティーで JDBC データソースを設定します。
$ dpconf set-jdbc-data-source-prop payroll-src \ db-user:proxy db-pwd-file:password-file-location/myPasswordFile
JDBC データソースを有効にします。
$ dpconf set-jdbc-data-source-prop payroll-src is-enabled:true
給与データベース用の JDBC データソースプールを作成します。
$ dpconf create-jdbc-data-source-pool payroll-pool
給与データソースをデータソースプールに接続します。
$ dpconf attach-jdbc-data-source payroll-pool payroll-src
仮想 DN の o=payroll で給与データベースの JDBC データビューを作成します。
$ dpconf create-jdbc-data-view payroll-view payroll-pool o=payroll
SQL データベースの各テーブルの JDBC テーブルを作成します。
$ dpconf create-jdbc-table jdbc-employee employee $ dpconf create-jdbc-table jdbc-salary salary
各 SQL テーブルの各列の JDBC 属性を作成します。
$ dpconf add-jdbc-attr jdbc-employee eid employee_id $ dpconf add-jdbc-attr jdbc-employee first firstname $ dpconf add-jdbc-attr jdbc-employee last lastname $ dpconf add-jdbc-attr jdbc-employee description description $ dpconf add-jdbc-attr jdbc-employee spouse spousename $ dpconf add-jdbc-attr jdbc-salary salary salary $ dpconf add-jdbc-attr jdbc-salary social ssn
JDBC データビューで表示できる属性と書き込める属性を指定します。
$ dpconf set-jdbc-data-view-prop payroll-view \ viewable-attr:eid \ viewable-attr:first \ viewable-attr:last \ viewable-attr:desc \ viewable-attr:spouse \ viewable-attr:salary \ viewable-attr:social $ dpconf set-jdbc-data-view-prop payroll-view \ writable-attr:eid \ writable-attr:first \ writable-attr:last \ writable-attr:description \ writable-attr:spouse \ writable-attr:salary \ writable-attr:social
LDAP オブジェクトクラスにマップされる JDBC オブジェクトクラスを作成します。
次のコマンドは、LDAP person オブジェクトクラスにマップされるオブジェクトクラスを作成します。オブジェクトクラスは、従業員テーブルは一次テーブルとして使用され、給与テーブルが二次テーブルとして使用されるよう指定します。eid 属性は、DN を構築するために使用されます。
$ dpcfg create-jdbc-object-class payroll-view \ person jdbc-employee jdbc-salary eid
二次テーブルからのデータが一次テーブルからのデータにリンクされる方法を指定したフィルタ結合ルールを二次テーブル上で作成します。
次の結合ルールは、employee_id 属性に基づいてデータが結合されるよう指定します。
$ dpconf set-jdbc-table-prop jdbc-salary \ filter-join-rule:'employee_id=\${employee.employee_id}'
JDBC オブジェクトクラス上のスーパークラスを作成します。
$ set-jdbc-object-class-prop payroll-view person super-class:extensibleObject