여기 와서 매일 질문만 하는 것 같네요.. 언젠간 답변할 날도 오겠죠? --;
서버를 띄우고 잘 쓰다가 어느 정도 기간이 지나면 다음과 같은 에러가 뜹니다. 서버를 다시 부팅하면 다시 이상 없고요.
java.lang.OutOfMemoryError: max threads limit being reached in VM
at java.lang.Thread.start(Native Method)
at netscape.ldap.LDAPConnThread.<init>(LDAPConnThread.java:112)
at netscape.ldap.LDAPConnection.getNewThread(LDAPConnection.java:1117)
at netscape.ldap.LDAPConnection.connect(LDAPConnection.java:1034)
at netscape.ldap.LDAPConnection.connect(LDAPConnection.java:915)
at netscape.ldap.LDAPConnection.connect(LDAPConnection.java:828)
at businesscard2.bc2_ref.BC2_Ldap.getLdapConnection(BC2_Ldap.java:88)
저희는 HP장비에 weblogic과 iplanet server를 같이 쓰면서 jsp와 ejb를 돌리고 있습니다.
일단 weblogic 환경 설정에서 thread를 늘려 주었지만 역시 그것도 한계가 있어서 해결책은 안되었습니다.
꼭 Ldap connection해서 쓰는 화면만 이렇게 에러가 뜨는데 그런 면에선 서버 설정 문제라고 생각하기에도 좀 미심적구요,
혹시 Ldap이 리소스를 많이 잡아 먹나요?
어떻게 해야 할까요? 혹시 해서 제가 쓰고 있는 ldap 부분 소스도 올립니다.
조언 부탁드립니다.
/*다음 함수를 jsp에서 호출합니다.*/
public int ldapGetListCount(String srchbase, String filterAttr, String filterVal, HttpServletRequest req) throws Exception{
int cntEntry = 0;
LDAPConnection ld = getLdapConnection();
LDAPSearchResults res = ldapSrch(ld, srchbase, filterAttr, filterVal);
try{
while(res.hasMoreElements()) {
LDAPEntry findEntry = res.next();
cntEntry++;
}
}catch(Exception e){
throw new Exception(UNKNOWN_ERROR);
}finally{
if((ld!=null) && ld.isConnected()){
try{
ld.disconnect();
}catch(Exception e){}
}
}
return cntEntry;
}//end ldapGetListCount
/*Connect Ldap*/
public LDAPConnection getLdapConnection() throws Exception{
LDAPConnection ld = null;
try{
ld = new LDAPConnection();
ld.connect(ldapHost, ldapPort, mngDn, mngPasswd);
}catch(Exception e){
throw new Exception(CONNECT_FAILED);
}
return ld;
}
|