Interstage Application Server Smart Repository運用ガイド |
目次 索引 |
第6章 アプリケーションの作成(JNDI) | > 6.2 サンプルプログラム |
ここでは、エントリの検索を行う場合のサンプルプログラムを紹介します。このサンプルは、指定したリポジトリサーバに対してSSLを使用した簡易認証による検索を行い、検索結果のエントリ情報を出力します。
その他のサンプルプログラムについては、ソースファイルを直接参照してください。
/* Copyright (c) 2004 FUJITSU LIMITED * All Rights Reserved. * * エントリの検索を行う(SSL動作用) */ import java.util.Hashtable; import java.util.Enumeration; import java.util.Properties; import javax.naming.*; import javax.naming.directory.*; import com.sun.jndi.ldap.*; class Search { /* * 環境定義パラメタ * (実行環境に合わせて以下のパラメタを変更する必要があります。) */ public static final String ldapurl = "ldap://localhost:636/"; public static final String binddn = "cn=manager,ou=interstage,o=fujitsu,dc=com"; public static final String password = "secret"; public static final String sslenvfile = "D:\\conf\\sslconfig.cfg"; public static final String ssllogdir = "D:\\log"; public static final String s_base = "ou=interstage,o=fujitsu,dc=com"; public static final String filter = "cn=User001"; public static void main(String[] args) { Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); /* 環境プロパティの設定 */ env.put(Context.PROVIDER_URL, ldapurl ); env.put(Context.SECURITY_AUTHENTICATION, "simple" ); env.put(Context.SECURITY_PRINCIPAL, binddn ); env.put(Context.SECURITY_CREDENTIALS, password ); /* SSL用の環境プロパティの設定 */ env.put("java.naming.ldap.factory.socket", "com.fujitsu.ssl.FjSSLSocketFactory"); env.put(Context.SECURITY_PROTOCOL, "ssl" ); /* システムプロパティの取得 */ Properties prop = System.getProperties(); prop.put("user.sslenvfile", sslenvfile); prop.put("user.ssllogdir", ssllogdir ); try { /* リポジトリサーバに接続 */ DirContext ctx = new InitialDirContext(env); /* 検索範囲の指定 */ SearchControls constraints = new SearchControls(); constraints.setSearchScope(SearchControls.SUBTREE_SCOPE); /* * 検索開始位置:ou=interstage,o=fujitsu,dc=com、検索フィルタ:cn=User001 * で検索実行 */ NamingEnumeration results = ctx.search(s_base, filter, constraints); /* 検索結果の表示 */ while (results != null && results.hasMore()) { SearchResult si = (SearchResult)results.next(); /* エントリ名の出力 */ System.out.println("name: " + si.getName()); Attributes attrs = si.getAttributes(); if (attrs == null) { System.out.println("No attributes"); } else { /* 属性の出力 */ for (NamingEnumeration ae = attrs.getAll(); ae.hasMoreElements(); ) { Attribute attr = (Attribute)ae.next(); String attrId = attr.getID(); /* 属性値の出力 */ for (Enumeration vals = attr.getAll(); vals.hasMoreElements(); System.out.println(attrId + ": " + vals.nextElement())); } } System.out.println(); } ctx.close(); } catch(NamingException ne) { Throwable msg = ne.getRootCause(); String msgStr = null; int ssl_error = -1; if ( msg != null ) { /* エラーメッセージの取得 */ msgStr = msg.toString(); /*エラーを取得するキー検索 */ ssl_error = msgStr.indexOf("FjSSLSocket"); } /* SSL用の処理 */ if ( ssl_error != -1 ) { int index1 = msgStr.indexOf("errtype=") + "errtype=".length(); if ( index1 != -1 ) { /*エラータイプの取得 */ String error = msgStr.substring(index1, index1 + 2); /*エラータイプの表示 */ System.out.println("SSL Error code : " + error); } } System.out.println("Search example failed."); } catch(Exception e) { System.out.println(e.getMessage()); System.out.println(e.getLocalizedMessage()); } } } |
/* Copyright (c) 2004 FUJITSU LIMITED * All Rights Reserved. * * エントリの検索を行う(SSL動作用) */ import java.util.Hashtable; import java.util.Enumeration; import java.util.Properties; import javax.naming.*; import javax.naming.directory.*; import com.sun.jndi.ldap.*; class Search { /* * 環境定義パラメタ * (実行環境に合わせて以下のパラメタを変更する必要があります。) */ public static final String ldapurl = "ldap://localhost:636/"; public static final String binddn = "cn=manager,ou=interstage,o=fujitsu,dc=com"; public static final String password = "secret"; public static final String sslenvfile = "/conf/sslconfig.cfg"; public static final String ssllogdir = "/log"; public static final String s_base = "ou=interstage,o=fujitsu,dc=com"; public static final String filter = "cn=User001"; public static void main(String[] args) { Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); /* 環境プロパティの設定 */ env.put(Context.PROVIDER_URL, ldapurl ); env.put(Context.SECURITY_AUTHENTICATION, "simple" ); env.put(Context.SECURITY_PRINCIPAL, binddn ); env.put(Context.SECURITY_CREDENTIALS, password ); /* SSL用の環境プロパティの設定 */ env.put("java.naming.ldap.factory.socket", "com.fujitsu.ssl.FjSSLSocketFactory"); env.put(Context.SECURITY_PROTOCOL, "ssl" ); /* システムプロパティの取得 */ Properties prop = System.getProperties(); prop.put("user.sslenvfile", sslenvfile); prop.put("user.ssllogdir", ssllogdir ); try { /* リポジトリサーバに接続 */ DirContext ctx = new InitialDirContext(env); /* 検索範囲の指定 */ SearchControls constraints = new SearchControls(); constraints.setSearchScope(SearchControls.SUBTREE_SCOPE); /* * 検索開始位置:ou=interstage,o=fujitsu,dc=com、検索フィルタ:cn=User001 * で検索実行 */ NamingEnumeration results = ctx.search(s_base, filter, constraints); /* 検索結果の表示 */ while (results != null && results.hasMore()) { SearchResult si = (SearchResult)results.next(); /* エントリ名の出力 */ System.out.println("name: " + si.getName()); Attributes attrs = si.getAttributes(); if (attrs == null) { System.out.println("No attributes"); } else { /* 属性の出力 */ for (NamingEnumeration ae = attrs.getAll(); ae.hasMoreElements(); ) { Attribute attr = (Attribute)ae.next(); String attrId = attr.getID(); /* 属性値の出力 */ for (Enumeration vals = attr.getAll(); vals.hasMoreElements(); System.out.println(attrId + ": " + vals.nextElement())); } } System.out.println(); } ctx.close(); } catch(NamingException ne) { Throwable msg = ne.getRootCause(); String msgStr = null; int ssl_error = -1; if ( msg != null ) { /* エラーメッセージの取得 */ msgStr = msg.toString(); /*エラーを取得するキー検索 */ ssl_error = msgStr.indexOf("FjSSLSocket"); } /* SSL用の処理 */ if ( ssl_error != -1 ) { int index1 = msgStr.indexOf("errtype=") + "errtype=".length(); if ( index1 != -1 ) { /*エラータイプの取得 */ String error = msgStr.substring(index1, index1 + 2); /*エラータイプの表示 */ System.out.println("SSL Error code : " + error); } } System.out.println("Search example failed."); } catch(Exception e) { System.out.println(e.getMessage()); System.out.println(e.getLocalizedMessage()); } } } |
目次 索引 |