| 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());
}
}
}
|
目次
索引
![]()
|