Hey, There was a bug in seam's LdapIdentityStore class (that holds the userExists method) while doing the filtering.. Problem solved now.
Thanks all, M. 2009/4/22 Alex Karasulu <[email protected]> > Hi Mert, Yiannis, > > Yiannis is right on this one. We fixed a lot of bugs in 1.5.5 and I think > it may impact this scenario. Give it a try and let us know. 1.5.5 should > be out here in a week or so. We apologize for the delays. > > > 2009/4/22 Yiannis Mavroukakis <[email protected]> > > > I go via the "build your own" route to be honest, just get the entire > > source tree via SVN and do a mvn -Dmaven.test.skip=true install > > > > Y. > > > > > > Mert Çalışkan wrote: > > > >> ok, > >> is there any nightly builds? or I should do it myself? > >> > >> 2009/4/22 Yiannis Mavroukakis <[email protected]> > >> > >> > >> > >>> Sorry I meant build off of the SVN branch, this is what I am using. > >>> > >>> > >>> Mert Çalışkan wrote: > >>> > >>> > >>> > >>>> 1.5.5? > >>>> latest downloads are only for 1.5.4, no? > >>>> http://directory.apache.org/apacheds/1.5/downloads.html > >>>> > >>>> 2009/4/22 Yiannis Mavroukakis <[email protected]> > >>>> > >>>> > >>>> > >>>> > >>>> > >>>>> Have you tried this with 1.5.5 ? > >>>>> > >>>>> > >>>>> Mert Çalışkan wrote: > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>>>> yes, when that method executes, my ApacheDS server (standalone > working > >>>>>> one) > >>>>>> throws that error. > >>>>>> > >>>>>> > >>>>>> 2009/4/22 Yiannis Mavroukakis <[email protected]> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>> Are you getting the same ClassCastException as the root cause of > the > >>>>>>> search? > >>>>>>> > >>>>>>> > >>>>>>> Mert Çalışkan wrote: > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>>> Hey, > >>>>>>>> > >>>>>>>> via jdni calls I guess, seam's ldap-identity-store is taking care > >>>>>>>> of... > >>>>>>>> lemme elaborate the case, > >>>>>>>> > >>>>>>>> Actually before creating a user, the seam framework is doing a > >>>>>>>> search > >>>>>>>> with > >>>>>>>> userExists method. > >>>>>>>> > >>>>>>>> public boolean userExists(String name) > >>>>>>>> { > >>>>>>>> InitialLdapContext ctx = null; > >>>>>>>> try > >>>>>>>> { > >>>>>>>> ctx = initialiseContext(); > >>>>>>>> > >>>>>>>> String[] userAttr = {getUserNameAttribute()}; > >>>>>>>> > >>>>>>>> SearchControls controls = new SearchControls(); > >>>>>>>> controls.setSearchScope(searchScope); > >>>>>>>> controls.setReturningAttributes(userAttr); > >>>>>>>> controls.setTimeLimit(getSearchTimeLimit()); > >>>>>>>> > >>>>>>>> StringBuilder userFilter = new StringBuilder(); > >>>>>>>> > >>>>>>>> Object[] filterArgs = new > >>>>>>>> Object[getUserObjectClasses().length]; > >>>>>>>> for (int i = 0; i < getUserObjectClasses().length; i++) > >>>>>>>> { > >>>>>>>> userFilter.append("("); > >>>>>>>> userFilter.append(getObjectClassAttribute()); > >>>>>>>> userFilter.append("={"); > >>>>>>>> userFilter.append(i); > >>>>>>>> userFilter.append("})"); > >>>>>>>> filterArgs[i] = getUserObjectClasses()[i]; > >>>>>>>> } > >>>>>>>> > >>>>>>>> NamingEnumeration answer = ctx.search(getUserContextDN(), > >>>>>>>> userFilter.toString(), filterArgs, controls); > >>>>>>>> while (answer.hasMore()) > >>>>>>>> { > >>>>>>>> SearchResult sr = (SearchResult) answer.next(); > >>>>>>>> Attributes attrs = sr.getAttributes(); > >>>>>>>> Attribute user = attrs.get(getUserNameAttribute()); > >>>>>>>> > >>>>>>>> for (int i = 0; i < user.size(); i++) > >>>>>>>> { > >>>>>>>> Object value = user.get(i); > >>>>>>>> if (name.equals(value)) > >>>>>>>> { > >>>>>>>> answer.close(); > >>>>>>>> return true; > >>>>>>>> } > >>>>>>>> } > >>>>>>>> } > >>>>>>>> answer.close(); > >>>>>>>> return false; > >>>>>>>> } > >>>>>>>> catch (NamingException ex) > >>>>>>>> { > >>>>>>>> throw new IdentityManagementException("Error getting users", > >>>>>>>> ex); > >>>>>>>> } > >>>>>>>> finally > >>>>>>>> { > >>>>>>>> if (ctx != null) > >>>>>>>> { > >>>>>>>> try > >>>>>>>> { > >>>>>>>> ctx.close(); > >>>>>>>> } > >>>>>>>> catch (NamingException ex) {} > >>>>>>>> } > >>>>>>>> } > >>>>>>>> } > >>>>>>>> > >>>>>>>> and this is throwing out, > >>>>>>>> > >>>>>>>> Caused by: > >>>>>>>> org.jboss.seam.security.management.IdentityManagementException: > >>>>>>>> Error getting users > >>>>>>>> at > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > org.jboss.seam.security.management.LdapIdentityStore.userExists(LdapIdentityStore.java:1235) > >>>>>>>> at > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > org.jboss.seam.security.management.IdentityManager.userExists(IdentityManager.java:172) > >>>>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > >>>>>>>> at > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > >>>>>>>> at > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > >>>>>>>> at java.lang.reflect.Method.invoke(Method.java:597) > >>>>>>>> at > >>>>>>>> > >>>>>>>> > org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:335) > >>>>>>>> ... 79 more > >>>>>>>> Caused by: javax.naming.CommunicationException: Request: 2 > >>>>>>>> cancelled; > >>>>>>>> remaining name 'ou=people,o=mycompany' > >>>>>>>> at com.sun.jndi.ldap.LdapRequest.getReplyBer(LdapRequest.java:60) > >>>>>>>> at com.sun.jndi.ldap.Connection.readReply(Connection.java:411) > >>>>>>>> > >>>>>>>> M > >>>>>>>> > >>>>>>>> > >>>>>>>> On Wed, Apr 22, 2009 at 3:55 PM, Yiannis Mavroukakis < > >>>>>>>> [email protected]> wrote: > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>>> How are you creating this new person? Via JNDI calls or through > the > >>>>>>>>> DS > >>>>>>>>> API? > >>>>>>>>> > >>>>>>>>> Y. > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> Mert Çalışkan wrote: > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>>> Hi, > >>>>>>>>>> > >>>>>>>>>> I'm integrating the seam framework's user management module with > >>>>>>>>>> ApacheDS > >>>>>>>>>> ldap. For creating a new user (person objectClass) in the DS I > got > >>>>>>>>>> the > >>>>>>>>>> error > >>>>>>>>>> below, > >>>>>>>>>> So apacheDS is forcing the client to close the conn since it > gets > >>>>>>>>>> a > >>>>>>>>>> classcast. I'm on 1.5.4 version. How to debug & solve this? Any > >>>>>>>>>> clues? > >>>>>>>>>> > >>>>>>>>>> Thanks, > >>>>>>>>>> > >>>>>>>>>> M > >>>>>>>>>> > >>>>>>>>>> Trace: > >>>>>>>>>> > >>>>>>>>>> [15:39:46] WARN > >>>>>>>>>> [org.apache.directory.server.ldap.LdapProtocolHandler] > >>>>>>>>>> - > >>>>>>>>>> [/ > >>>>>>>>>> 127.0.0.1:2453] Unexpected exception forcing > >>>>>>>>>> session to close: sending disconnect notice to client. > >>>>>>>>>> *org.apache.mina.filter.codec.ProtocolDecoderException: > >>>>>>>>>> java.lang.ClassCastException: > org.apache.directory.shared.ldap.co > >>>>>>>>>> dec.search.AttributeValueAssertionFilter cannot be cast to > >>>>>>>>>> org.apache.directory.shared.ldap.codec.search.ConnectorFilter* > >>>>>>>>>> (Hexdump: 30 81 82 02 01 02 63 60 04 17 6F 75 3D 70 65 6F 70 6C > 65 > >>>>>>>>>> 2C > >>>>>>>>>> 6F > >>>>>>>>>> 3D > >>>>>>>>>> 6F 6E 74 6F 6D 65 74 72 69 63 73 0A 01 02 0 > >>>>>>>>>> A 01 03 02 01 00 02 01 0B 01 01 00 A3 15 04 0B 6F 62 6A 65 63 74 > >>>>>>>>>> 43 > >>>>>>>>>> 6C > >>>>>>>>>> 61 > >>>>>>>>>> 73 > >>>>>>>>>> 73 04 06 70 65 72 73 6F 6E A3 18 04 0B 6F 6 > >>>>>>>>>> 2 6A 65 63 74 43 6C 61 73 73 04 09 75 69 64 4F 62 6A 65 63 74 30 > >>>>>>>>>> 05 > >>>>>>>>>> 04 > >>>>>>>>>> 03 > >>>>>>>>>> 75 > >>>>>>>>>> 69 64 A0 1B 30 19 04 17 32 2E 31 36 2E 38 3 > >>>>>>>>>> 4 30 2E 31 2E 31 31 33 37 33 30 2E 33 2E 34 2E 32) > >>>>>>>>>> at > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:165) > >>>>>>>>>> at > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299) > >>>>>>>>>> at > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53) > >>>>>>>>>> at > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:6 > >>>>>>>>>> 48) > >>>>>>>>>> at > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilter.java:220) > >>>>>>>>>> at > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run(ExecutorFilter.java:264) > >>>>>>>>>> at > >>>>>>>>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown > >>>>>>>>>> Source) > >>>>>>>>>> at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown > >>>>>>>>>> Source) > >>>>>>>>>> at java.lang.Thread.run(Unknown Source) > >>>>>>>>>> Caused by: java.lang.ClassCastException: > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > org.apache.directory.shared.ldap.codec.search.AttributeValueAssertionFilter > >>>>>>>>>> can > >>>>>>>>>> not be cast to > >>>>>>>>>> org.apache.directory.shared.ldap.codec.search.ConnectorFilter > >>>>>>>>>> at > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > org.apache.directory.shared.ldap.codec.search.SearchRequest.addCurrentFilter(SearchRequest.java:356) > >>>>>>>>>> at > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > org.apache.directory.shared.ldap.codec.actions.InitEqualityMatchFilterAction.action(InitEqualityMatchFilterAc > >>>>>>>>>> tion.java:70) > >>>>>>>>>> at > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > org.apache.directory.shared.asn1.ber.grammar.AbstractGrammar.executeAction(AbstractGrammar.java:153) > >>>>>>>>>> at > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > org.apache.directory.shared.asn1.ber.Asn1Decoder.treatTLVDoneState(Asn1Decoder.java:620) > >>>>>>>>>> at > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > org.apache.directory.shared.asn1.ber.Asn1Decoder.decode(Asn1Decoder.java:796) > >>>>>>>>>> at > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > org.apache.directory.shared.ldap.codec.TwixDecoder.decode(TwixDecoder.java:110) > >>>>>>>>>> at > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > org.apache.directory.shared.ldap.message.MessageDecoder.decode(MessageDecoder.java:150) > >>>>>>>>>> at > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > org.apache.directory.shared.asn1.codec.Asn1CodecDecoder.decode(Asn1CodecDecoder.java:53) > >>>>>>>>>> at > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:158) > >>>>>>>>>> ... 8 more > >>>>>>>>>> [15:39:46] WARN > >>>>>>>>>> [org.apache.directory.server.ldap.LdapProtocolHandler] > >>>>>>>>>> - > >>>>>>>>>> Null LdapSession given to cleanUpSession. > >>>>>>>>>> [15:39:46] WARN > >>>>>>>>>> [org.apache.directory.server.ldap.LdapProtocolHandler] > >>>>>>>>>> - > >>>>>>>>>> Null LdapSession given to cleanUpSession. > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>> > >>>> > >>> > >> > >> > > > > > -- > Alex Karasulu > My Blog :: http://www.jroller.com/akarasulu/ > Apache Directory Server :: http://directory.apache.org > Apache MINA :: http://mina.apache.org >
