Interstage Application Server Smart Repositoryユーザーズガイド
目次 索引 前ページ次ページ

第2章 アプリケーションの作成(C API)> 2.3 サンプルプログラム

2.3.2 サンプルプログラムの実施手順

 サンプルプログラムのコンパイルから実行までの手順について説明します。

コンパイル手順

  1. C言語のサンプルプログラム格納ディレクトリ配下のすべてのファイルを作業ディレクトリにコピーします。

    サンプルプログラムは以下の位置にあります。
     “/opt/FJSVidsdk/C/example”

  2. 作業ディレクトリに“書き込み”の権限を設定します。


     chmod +w example

  3. 接続するリポジトリサーバの環境に合わせて、サンプルソース上でパラメタ値を変更します。該当するパラメタについては、“パラメタ一覧”を参照してください。なお、パラメタの詳細については、“リファレンスマニュアル(API編)”の“C言語インタフェース”-“Smart Repositoryインタフェース”にある各関数パラメタの説明を参照してください。
     
  4. makeコマンドによりサンプルプログラムをコンパイルします。makeコマンドの実行の際に、「makefile」ファイルが存在することを確認してください。“サンプルプログラムのファイル一覧”にある各LDAP操作のソースファイルに対応する実行ファイルが作成されることを確認してください。

パラメタ一覧

 パラメタ一覧を以下に示します。

 

サンプル種別(注)

パラメタ

概要

備考

共通パラメタ

host

接続するリポジトリサーバのホスト名、またはIPアドレス

 

port

リポジトリサーバのポート番号

デフォルトのポート番号は以下のようになります。
- LDAP_PORT: 389

binddn

BINDするためのDN

 

passwd

BINDするためのパスワード

 

エントリの検索

s_base

サーチベースのDN

 

scope

検索対象範囲

以下のどれか1つを指定します。
- LDAP_SCOPE_BASE: s_baseで指定したエントリを検索
- LDAP_SCOPE_ONELEVEL: s_baseで指定したエントリの1階層下のエントリを検索
- LDAP_SCOPE_SUBTREE: s_baseで指定したエントリとその配下の全エントリの中から検索

filter

検索フィルタ

すべてのエントリを検索する場合は、“(objectClass=*)”を指定してください。

attrs

通知する属性名

複数の属性名を配列で指定します。配列の最後には、NULLを設定する必要があります。

属性値の比較

cmp_dn

比較を行うエントリのDN

 

attr

比較を行う属性名

 

value

比較対象の文字列データ

 

エントリの変更

mod_dn

変更するエントリのDN

 

mods

変更する属性情報

(LDAPMod構造体のポインタ配列のアドレス)

構造体の各項目に設定する値は、“リファレンスマニュアル(API編)”の“Smart Repositoryインタフェース”-“ldap_modify()”を参照してください。

エントリの変名

old_dn

変名するエントリのDN

 

new_dn

変名後のDN

変名後のDNをもつエントリが存在しないように、サンプルプログラム内で事前にエントリが削除されます。

new_rdn

新しいRDN

 

mods

追加する属性情報

(LDAPMod構造体のポインタ配列のアドレス)

サンプルプログラム内で変名するエントリが事前に作成されます。構造体の各項目に設定する値は、“リファレンスマニュアル(API編)”の“Smart Repositoryインタフェース”-“ldap_add()”を参照してください。

NMODS

追加するエントリの属性の数

modsの配列長を指定してください。

work_area

作業用の構造体

日本語を扱う場合に、modsの内容に合わせ変更する必要があります。

エントリの追加

add_dn

追加するエントリのDN

 

mods

追加する属性情報

(LDAPMod構造体のポインタ配列のアドレス)

構造体の各項目に設定する値は、“リファレンスマニュアル(API編)”の“Smart Repositoryインタフェース”-“ldap_add()”を参照してください。

NMODS

追加する属性名の数

modsの配列長を指定してください。

work_area

作業用の構造体

日本語を扱う場合に、modsの内容に合わせ変更する必要があります。

エントリの削除

del_dn

削除するエントリのDN

 

注)サンプル種別は、“サンプルプログラムのファイル一覧”と対応しています。

実行手順

 上記で作成された実行ファイルを直接実行します。



 サンプルの日本語表示はEUC環境を前提としています。サンプルを動作させるターミナルの環境がEUC以外の場合、文字化けする場合があります。ターミナルの環境をEUCに設定してください。

1)サンプルプログラムが成功する場合(同期型のエントリ変更)

# ./modattrs ・・・ サンプルプログラム実行
./modattrs is start
./modattrs: ldap_init( "host1", 389 )
./modattrs: ldap_set_option( LDAP_OPT_PROTOCOL_VERSION, 3 )
./modattrs: ldap_simple_bind_s( "cn=manager,ou=interstage,o=fujitsu,dc=com", "******" )
./modattrs: ldap_modify_s( "uid=100001,ou=interstage,o=fujitsu,dc=com", ****** )
./modattrs: ldap_unbind( )
./modattrs is normal end

 例1では、サンプルプログラムが正常に終了したことを示します。

2)サンプルプログラムが失敗する場合(非同期型のエントリ検索)

# ./search ・・・ サンプルプログラム実行
./search is start
./search: ldap_init( "host1", 389 )
./search: ldap_set_option( LDAP_OPT_PROTOCOL_VERSION, 3 )
./search: ldap_simple_bind_s( "cn=manager,ou=interstage,o=fujitsu,dc=com", "******" )
ldap_simple_bind_s: Can't contact LDAP server
./search: ldap_unbind( )
./search is abnormal end

 例2では、サンプルプログラム(search.c)中のldap_simple_bind_s()でエラーとなっています。エラーメッセージ「Can't contact LDAP server」から、リポジトリサーバが起動されていない、または接続先サーバ情報に誤りがあるなどの原因が考えられます。

 サンプルプログラムで出力されるメッセージについては、“メッセージ集”の“LDAPエラーコード”を参照してください。


目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2005