JNDI を使って、Java オブジェクトをLDAP に登録する実験をしたいが、その前にまず、LDAPサーバを準備する必要がある。そこで、以前 Cygwin を入れたときに一緒にインストールしたまま未使用だった OpenLDAP を活用してみる事にした。
■ バージョン等- OS: Windows XP SP3
- Cygwin : 1.5.25
- OpenLDAP: 2.3.43-1
■ 前提OpenLDAP 込みで、Cygwin が入っている前提。
- Cygwin がなかったら、ここから SetUp.exe を実行。
- OpenLDAP がなかったら、SetUp.exe の「Select Package」で Net カテゴリの下にある openldap を選択して追加。
■ Windows サービスに登録必須ではないがサービスとして登録した。
cygrunsrv --install OpenLDAP --path /usr/sbin/slapd --args "-d 0 -f /etc/openldap/slapd.conf" --desc OpenLDAP/Cygwin
登録内容の確認は
- Cygwin コマンドプロンプトからcygrunsrv -L -V、または
- 「コンパネ」/「管理ツール」/「サービス」(以下、単に「サービス」)での OpenLDAP の表示。
動いていることの確認は
- 「サービス」で状態が”開始”になっている事
- netstat -ano|grep 389 でポート 389のプロセス番号を調べて、タスク・マネージャでそのプロセス番号が slapd.exe のものである事を確認
※ 起動が遅くなるのがイヤなので、いったん登録した後「スタートアップの種類」を手動に設定。
■ 設定こんな
slapd.confにした
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/java.schema
pidfile /var/openldap/run/slapd.pid
argsfile /var/openldap/run/slapd.args
database bdb
suffix "dc=example,dc=com"
rootdn "cn=Manager,dc=example,dc=com"
rootpw secret
directory /var/openldap/openldap-data
index objectClass eq
2行目の java.schema のinclude を追加し、"dc=my-company"を、example に変更。
■ エントリを追加してみる上記設定の動作を確認。
LDAP Admin というツールを見つけたので使う事にした。[→
URL]
LDAP Admin を起動して、[New Connection] で 以下の接続設定を新規作成。
- Host:127.0.0.1
- Port:389
- Version:3
- Username:cn=Manager,dc=example,dc=com
- Password:secret
接続すると
dc=example,dc=com が表示されるが、今のところエントリ無し。
以下のように test.ldif を書いて、これを Cygwin から LDAP に読ませる。
dn: o=JNDITest,dc=example,dc=com
o: JNDITest
objectclass: top
objectclass: organization
$ ldapadd -x -D "cn=Manager,dc=example,dc=com" -w secret -f test.ldif
エントリが追加された事をLDAP Admin で確認

これで、JNDI + LDAP を試す準備ができた。
■ 参考URLhttp://web.mit.edu/cygwin/cygwin_v1.3.2/usr/doc/Cygwin/cygrunsrv.README
http://rigsb.net/wiki/index.php?title=Run_OpenLDAP_as_a_Windows_service_via_Cygwin
http://linux.die.net/man/8/slapd