すいません、、何方か知っている方がいましたらご教授下さい。
アプリ環境:windows2003 Websphere v5.1 JDK 1.4.2
LDAP環境:AIX5 OpenLDAP
の環境で、javaからLDAPにアクセスするロジックを作成中です。
アクセスは出来るのですが、コネクションがclose()を使っても切れません。
ガベージコレクションで切れる事はわかったのですが、何かほかの方法はないでしょうか?よろしくお願いいたします。
import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
import javax.naming.ldap.InitialLdapContext;
import javax.naming.ldap.LdapContext;
public class LdapDAO {
private Hashtable env;
private DirContext ctx = null;
public LdapDAO() throws NamingException {
String url = "ldap://172.22.1.85:389";
String auth = "simple";
String base = "ou=people,dc=com";
String user = "***";
String pass = "***";
env = new Hashtable();
env.put( Context.INITIAL_CONTEXT_FACTORY, cf);
env.put( Context.PROVIDER_URL, url);
env.put("java.naming.ldap.version", "3");
env.put( Context.SECURITY_AUTHENTICATION, auth);
env.put( Context.SECURITY_PRINCIPAL, user);
env.put( Context.SECURITY_CREDENTIALS, pass);
env.put("com.sun.jndi.ldap.connect.timeout", "3000");
env.put("com.sun.jndi.ldap.connect.pool", "true");
env.put("com.sun.jndi.ldap.connect.pool.timeout", "2000");
}
public String searchEmpAll(String employeeNumber, String flg) throws NamingException {
String result = "";
ctx = new InitialDirContext(env);
SearchControls cons = new SearchControls();
cons.setSearchScope(SearchControls.SUBTREE_SCOPE);
cons.setReturningObjFlag(true);
cons.setReturningAttributes(new String[]{****});
String filter = "****";
NamingEnumeration res = ctx.search(base, filter, cons);
for(int i = 0; res.hasMore(); i++) {
SearchResult entry = (SearchResult) res.next();
Attributes attrs = entry.getAttributes();
Attribute attribute = attrs.get(*****);
if(attribute != null) {
result = (String) attribute.get();
}
}
cons = null;
res = null;
ctx.close();
//System.gc();
return result;
}
}
No.3ベストアンサー
- 回答日時:
LDAP通信も噛み砕けばソケットです。
ソケットなどの解放は、Javaのガベージコレクタが実装されなければ
ESTABLISHEDの状態のままです。
これはJavaの仕様です。
クローズ後、System.gc()を実装すればコネクションは消えます。
参考URL:http://support.microsoft.com/kb/231183/ja
No.2
- 回答日時:
cons = null;
res.close(); ← この行を追加
res = null;
ctx.close();
これでコネクションが切れるはずです。
参考リンク)
http://www-1.ibm.com/support/entdocview.wss?rs=1 …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- その他(プログラミング・Web制作) ColabでのPytorchのエラー 1 2022/11/19 20:51
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- その他(プログラミング・Web制作) pythonのグローバル変数 2 2022/11/25 18:02
- C言語・C++・C# char string[100]; int c, i=0; while( (c=getchar()) 2 2022/05/30 21:41
- Perl Perlのエラーについてご教授ください。初心者です。 CGIを別サーバに移したところ、Perlのバー 5 2023/05/31 10:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<forEach> 内で供給された "ite...
-
setAttribute(String, int)は適...
-
ActionForm form にnullが入っ...
-
ファイル名を動的に生成したい
-
干支の計算で。。。
-
シャットダウンフックが呼ばれない
-
import 文
-
「例外 *** は対応する try 文...
-
eclipseに記述したjavaファイル...
-
Javaじゃんけんゲーム
-
かなり初歩的なプログラミング...
-
文字列を数式に
-
アプレットが初期化されていま...
-
透過GIFの判定の仕方ありますか?
-
アプレットを実行すると、×が表...
-
アルファベットのソート
-
HTMLでのTableタグデータ取得方法
-
応用情報技術者試験の令和元年...
-
1~100までの数字を表示し、か...
-
ループ処理の際、最後だけ","を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
eclipseに記述したjavaファイル...
-
「例外 *** は対応する try 文...
-
干支の計算で。。。
-
Selenium IDEでexportしたコー...
-
Javaを使ってデジタル時計を作...
-
ColabでのPytorchのエラー
-
importするには java.io.*; imp...
-
生年月日と今日の日付から年齢...
-
ファイル名を動的に生成したい
-
文字列を数式に
-
<forEach> 内で供給された "ite...
-
シャットダウンフックが呼ばれない
-
Javaからストアド実行(配列項目)
-
ActionForm form にnullが入っ...
-
setAttribute(String, int)は適...
-
(急募)JavaカレンダーをGUI可に...
-
文字サイズが可変のラベル
-
Java での グローバルIP取得
-
python OpenPyXLを使って出力結...
-
データの外挿について
おすすめ情報