Hello Andrea, Great! Now oracle partition works fine with modify operation. *And now, my JUnit tests fails only in two cases: if I define very long LDAP search filter,* Exception occured during LDAP processing; nested exception is javax.naming. NamingException: [LDAP: error code 80 - OTHER: failed for SearchRequest baseDn: ' 0.9.2342.19200300.100.1.25=example, 0.9.2342.19200300.100.1.25=com ' filter: ' (AND (1.137 = *) (1.143> =200) (| (1.137 =*some_some_value *) (1.144 =*name *) (1.138 =*name *)) (| (1.119=some_value_5) (1.119=some_value_6) (1.119=some_value_7) (1.119=some_value_8) (1.119=some_value_9) (1.119=some_value_14) (1.119=some_value_13) (1.119=some_value_12) (1.119=some_value_11) (1.119=some_value_10) (1.119=some_value_15) (1.119=some_value_16) (1.119=some_value_17) (1.119=some_value_18) (1.119=some_value_19) (1.119=some_value_20) (1.119=some_value_21) (1.119=some_value_22) (1.119=some_value_23) (1.119=some_value_24) (1.119=some_value_29) (1.119=some_value_28) (1.119=some_value_27) (1.119=some_value_26) (1.119=some_value_25) (1.119=some_value_30) (1.119=some_value_31) (1.119=some_value_32) (1.119=some_value_33) (1.119=value3333)) (| (0.9.2342.19200300.100.1.1=user_3) (0.9.2342.19200300.100.1.1=user_2) (0.9.2342.19200300.100.1.1=user_1)) (2.5.4.0=Users)) ' scope: whole subtree typesOnly: false Size Limit: no limit Time Limit: no limit Deref Aliases: deref Always attributes: : ORA-01460: unimplemented or unreasonable conversion requested ]; remaining name ' / ' But in my case i would implement search by data base VIEW using your indexed tables for each attribute, because ApacheDS does not support server side paging. *And when I try to modify entry Distinguished Name (to reproduce this, you can simply create an user entry with objectClass=inetOrgPerson in ApacheDS Studio, and set for it cn="user_0" and than try to modify "cn" to cn="user_0_newDN"), * [15:09:13] DEBUG [org.apache.directory.shared.ldap.codec. TwixEncoder] - Encoding this LdapMessage: LdapMessage message Id: 5 Modify DN Response Ldap Result Result code: (NO_SUCH_OBJECT) noSuchObject Matched DN: ' ou=Users, dc=example, dc=com ' Error message: ' NO_SUCH_OBJECT: failed for ModifyDN Response Entry: ' 0.9.2342.19200300.100.1.1=user_0,2.5.4.11=Users, 0.9.2342.19200300.100.1.25=example, 0.9.2342.19200300.100.1.25=com ' New RDN: ' 0.9.2342.19200300.100.1.1=user_0_newDN Delete old RDN: true : Attempt to lookup non-existant entry: uid=user_0, ou = Users, dc=example, dc=com: org.apache.directory.shared.ldap.exception. LdapNameNotFoundException: Attempt to lookup non-existant entry: uid=user_0, ou=Users, dc=example, dc=com at org.apache.directory.server.core.exception. ExceptionInterceptor.assertHasEntry (ExceptionInterceptor.java:581) at org.apache.directory.server.core.exception. ExceptionInterceptor.lookup (ExceptionInterceptor.java:305) at org.apache.directory.server.core.interceptor. InterceptorChain$Entry$1.lookup (InterceptorChain.java:1279) at org.apache.directory.server.core.interceptor. BaseInterceptor.lookup (BaseInterceptor.java:178) at org.apache.directory.server.core.interceptor. InterceptorChain.lookup (InterceptorChain.java:889) at org.apache.directory.server.core. DefaultOperationManager.lookup (DefaultOperationManager.java:609) at org.apache.directory.server.core.interceptor.context. AbstractOperationContext.lookup (AbstractOperationContext.java:345) at org.apache.directory.server.core.authz. AciAuthorizationInterceptor.rename (AciAuthorizationInterceptor.java:804) at org.apache.directory.server.core.interceptor. InterceptorChain$Entry$1.rename (InterceptorChain.java:1321) at org.apache.directory.server.core.referral. ReferralInterceptor.rename (ReferralInterceptor.java:376) at org.apache.directory.server.core.interceptor. InterceptorChain$Entry$1.rename (InterceptorChain.java:1321) at org.apache.directory.server.core.authn. AuthenticationInterceptor.rename (AuthenticationInterceptor.java:349) at org.apache.directory.server.core.interceptor. InterceptorChain$Entry$1.rename (InterceptorChain.java:1321) at org.apache.directory.server.core.normalisation. NormalizationInterceptor.rename (NormalizationInterceptor.java:161) at org.apache.directory.server.core.interceptor. InterceptorChain.rename (InterceptorChain.java:934) at org.apache.directory.server.core. DefaultOperationManager.rename (DefaultOperationManager.java:980) at org.apache.directory.server.core. DefaultCoreSession.rename (DefaultCoreSession.java:901) at org.apache.directory.server.core. DefaultCoreSession.rename (DefaultCoreSession.java:887) at org.apache.directory.server.ldap.handlers. ModifyDnHandler.handle (ModifyDnHandler.java:99) at org.apache.directory.server.ldap.handlers. ModifyDnHandler.handle (ModifyDnHandler.java:40) at org.apache.directory.server.ldap.handlers. LdapRequestHandler.handleMessage (LdapRequestHandler.java:176) at org.apache.directory.server.ldap.handlers. LdapRequestHandler.handleMessage (LdapRequestHandler.java:56) at org.apache.mina.handler.demux. DemuxingIoHandler.messageReceived (DemuxingIoHandler.java:232) at org.apache.directory.server.ldap. LdapProtocolHandler.messageReceived (LdapProtocolHandler.java:194) at org.apache.mina.core.filterchain. DefaultIoFilterChain$TailFilter.messageReceived (DefaultIoFilterChain.java:721) at org.apache.mina.core.filterchain. DefaultIoFilterChain.callNextMessageReceived (DefaultIoFilterChain.java:433) at org.apache.mina.core.filterchain. DefaultIoFilterChain.access$1200 (DefaultIoFilterChain.java:47) at org.apache.mina.core.filterchain. DefaultIoFilterChain$EntryImpl$1.messageReceived (DefaultIoFilterChain.java:801) at org.apache.mina.core.filterchain. IoFilterEvent.fire (IoFilterEvent.java:71) at org.apache.mina.core.session. IoEvent.run (IoEvent.java:63) at org.apache.mina.filter.executor. UnorderedThreadPoolExecutor$Worker.runTask (UnorderedThreadPoolExecutor.java:480) at org.apache.mina.filter.executor. UnorderedThreadPoolExecutor$Worker.run (UnorderedThreadPoolExecutor.java:434) at java.lang. Thread.run (Unknown Source) ' Also there are small remarks concerning server.xml, you seem have forgotten to correct xmlns = "http://apacheds.org/config/1.5.5-SNAPSHOT" to xmlns = "http://apacheds.org/config/1.5.5" and may be section with user name from "dsorapart" to "apacheds" in dsorapart2 dsorapart2 thin 1521 localhost db10g Thank you. 2009/11/28 Andrea Gariboldi > Ok Mikhail, > this is what you should do to patch your site: > > 1. sqlplus /@ @newfacade.sql > > 2. use the new apacheds-oracle-1.5.5.jar > > 3. let me know > > I've tested it with add/replace/remove all/remove specific value, and it > seems > to work smoothly. > > You can download sources and binaries here: > https://issues.apache.org/jira/browse/DIRSERVER-1345 > > > https://issues.apache.org/jira/secure/attachment/12426307/apacheds-oracle-1.5.5.tar.gz(contains the apacheds-oracle-1.5.5.jar) > > https://issues.apache.org/jira/secure/attachment/12426308/newfacade.sql(patch for your plsql) > > This wants to be a pretty good release for 1.5.5, a beta oracle backend for > users, the final integration > should come with 2.x releases.. > > cheers, > Andrea > > > 2009/11/27 Andrea Gariboldi > >> Thanks Mikhail, >> i can confirm you that when i introduced the partition_facade i lost >> the way the modify method was working in the previous version... >> >> So i am going to modify the partition_facade mechanism (package, and >> pl/sql to java object bridge) >> to handle correctly the modification object. >> >> Cheers, >> Andrea >> >> 2009/11/27 Самоделкин Михаил >> >> It will be cool! >>> >>> Then I will explain a cause of error little bit in more details, it is >>> possible it will be useful. >>> >>> Your "modify" method looks like below. >>> >>> public void modify (ModifyOperationContext ctx) throws Exception >>> { >>> executeDml ("begin partition_facade.modify (?); end;", >>> OracleEntry.fromServerEntry(*((ServerEntry) >>> ctx.getEntry().getClonedEntry ())*, this)); >>> } >>> >>> In the debug mode, I have found out that "modify" method calls two times. >>> For example if i have to modify attribute "city" for entry with >>> distinguished name "uid=user1, ou=Users, dc=example, dc=com" first time >>> call of modify method obtain "*ModifyOperationContext ctx*" and its >>> toString() value looks like: >>> >>> * ModifyContext for DN ' uid=user1, ou=Users, dc=example, dc=com ', >>> modifications >>> Modification: replace >>> attribute: city: London* >>> >>> and on this first time call, method not throw NullPointerException >>> because >>> *(ServerEntry) ctx.getEntry ()* >>> is not null. >>> >>> But on the second time call, modify method obtain "*ModifyOperationContext >>> ctx*" with toString() value witch looks like: >>> >>> *ModifyContext for DN ' uid=user1, ou=Users, dc=example, dc=com ', >>> modifications: >>> Modification: replace >>> attribute: modifiersName: 0.9.2342.19200300.100.1.1=admin, >>> 2.5.4.11=system >>> >>> Modification: replace >>> attribute: modifyTimestamp: 20091127160318Z* >>> >>> and now *(ServerEntry) ctx.getEntry ()* return null. and method fails >>> here >>> * ((ServerEntry) ctx.getEntry ().getClonedEntry ()).* >>> >>> May be with previous version of ApacheDs this method was not called two >>> times... >>> >>> Thank you. >>> >>> Best Regards, >>> *Mikhail Samadzelkin* >>> >>> >>> 2009/11/27 Andrea Gariboldi >>> >>> Ok Mikhail, >>>> i've seen that the pom.xml file still have some 1.5.5-SNAPSHOT >>>> reference becuse >>>> it was developed during 1.5.4 / 1.5.5-SNAPSHOT period. Probably the best >>>> thing to do is >>>> to cleanup the project a bit (i'am going to do it this week-end) so that >>>> it will be >>>> consistent for 1.5.5 production Apache DS release, and we can work on >>>> the same code. >>>> >>>> Then i will update the issue >>>> http://issues.apache.org/jira/browse/DIRSERVER-1345, >>>> so that you can download the new package.. >>>> >>>> Andrea >>>> >>>> >>>> >>>> >>>> >>>> 2009/11/26 Самоделкин Михаил >>>> >>>>> Andrea, Hi again. >>>>> >>>>> Сейчас я перекомпилировал все заново с использованием maven, и с учетом >>>>> нового кода >>>>> in OracleEntryCursorAdaptor.java >>>>> and in OraclePartition.java >>>>> и получил следующий apacheds-oracle-1.5.5-new-test.jar see attach. new >>>>> pom.xml and server.xml also attached. >>>>> >>>>> But i have the same exception on modify operation: >>>>> java.lang.NullPointerException >>>>> at >>>>> org.apache.directory.server.partition.impl.oracle.OraclePartition.modify(OraclePartition.java:372) >>>>> ..... >>>>> >>>>> >>>>> 2009/11/26 Самоделкин Михаил >>>>> >>>>> Hello Andrea, >>>>>> I did not modify anything else in java code, except what are described >>>>>> in your *.patch files. >>>>>> >>>>>> in OracleEntryCursorAdaptor.java >>>>>> >>>>>> -import org.apache.directory.server.core.cursor. AbstractCursor; >>>>>> +import org.apache.directory.shared.ldap.cursor. AbstractCursor; >>>>>> >>>>>> in OraclePartition.java >>>>>> >>>>>> - executeDml ("begin partition_facade.move_and_rename (?????); end;", >>>>>> toReversedDn (ctx.getParent ()), >>>>>> + executeDml ("begin partition_facade.move_and_rename (????); end;", >>>>>> toReversedDn (ctx.getParent ()), >>>>>> >>>>>> >>>>>> ctx.getNewRdn ().getNormName (), >>>>>> - ctx.getParent ().getUpName (), >>>>>> - ctx.getNewRdn ().getUpName (), >>>>>> + ctx.getNewRdn ().getUpName () + "," +ctx.getParent ().getUpName (), >>>>>> >>>>>> toReversedDn (ctx.getDn ())); >>>>>> >>>>>> But I changed server.xml file (see attachment), because with >>>>>> server.xml file whitch provided with this version of oracle >>>>>> partition apacheds-oracle.tar.gz, >>>>>> apacheds-oracle.tar.gz(\apacheds-oracle\oracle\server.xml) a server throws >>>>>> an exception and not starts. >>>>>> >>>>>> [12:20:22] ERROR [org.apache.directory.daemon. Bootstrapper] - Failed >>>>>> on null.init (InstallationLayout, String []) >>>>>> org.springframework.beans.factory. BeanDefinitionStoreException: *Unrecognized >>>>>> xbean namespace mapping: http://apacheds.org/config/1.5.5-SNAPSHOT* >>>>>> at org.apache.xbean.spring.context.v2c. >>>>>> XBeanNamespaceHandler.parseBeanFromExtensionElement >>>>>> (XBeanNamespaceHandler.java:277) >>>>>> at org.apache.xbean.spring.context.v2c. XBeanNamespaceHandler.parse >>>>>> (XBeanNamespaceHandler.java:155) >>>>>> at org.apache.xbean.spring.context.v2.XBeanNamespaceHandler.parse >>>>>> (XBeanNamespaceHandler.java:49) >>>>>> at org.springframework.beans.factory.xml. >>>>>> BeanDefinitionParserDelegate.parseCustomElement >>>>>> (BeanDefinitionParserDelegate.java:1297) >>>>>> at org.springframework.beans.factory.xml. >>>>>> BeanDefinitionParserDelegate.parseCustomElement >>>>>> (BeanDefinitionParserDelegate.java:1287) >>>>>> at >>>>>> org.apache.xbean.spring.context.v2.XBeanBeanDefinitionDocumentReader.parseBeanDefinitions >>>>>> (XBeanBeanDefinitionDocumentReader.java:84) >>>>>> at org.springframework.beans.factory.xml. >>>>>> DefaultBeanDefinitionDocumentReader.registerBeanDefinitions >>>>>> (DefaultBeanDefinitionDocumentReader.java:92) >>>>>> at org.springframework.beans.factory.xml. >>>>>> XmlBeanDefinitionReader.registerBeanDefinitions >>>>>> (XmlBeanDefinitionReader.java:507) >>>>>> at >>>>>> org.apache.xbean.spring.context.v2.XBeanXmlBeanDefinitionReader.registerBeanDefinitions >>>>>> (XBeanXmlBeanDefinitionReader.java:79) >>>>>> at org.springframework.beans.factory.xml. >>>>>> XmlBeanDefinitionReader.doLoadBeanDefinitions >>>>>> (XmlBeanDefinitionReader.java:398) >>>>>> at org.springframework.beans.factory.xml. >>>>>> XmlBeanDefinitionReader.loadBeanDefinitions >>>>>> (XmlBeanDefinitionReader.java:342) >>>>>> at org.springframework.beans.factory.xml. >>>>>> XmlBeanDefinitionReader.loadBeanDefinitions >>>>>> (XmlBeanDefinitionReader.java:310) >>>>>> at org.springframework.beans.factory.support. >>>>>> AbstractBeanDefinitionReader.loadBeanDefinitions >>>>>> (AbstractBeanDefinitionReader.java:143) >>>>>> at org.springframework.beans.factory.support. >>>>>> AbstractBeanDefinitionReader.loadBeanDefinitions >>>>>> (AbstractBeanDefinitionReader.java:178) >>>>>> at org.springframework.beans.factory.support. >>>>>> AbstractBeanDefinitionReader.loadBeanDefinitions >>>>>> (AbstractBeanDefinitionReader.java:149) >>>>>> at org.springframework.beans.factory.support. >>>>>> AbstractBeanDefinitionReader.loadBeanDefinitions >>>>>> (AbstractBeanDefinitionReader.java:212) >>>>>> at org.springframework.context.support. >>>>>> AbstractXmlApplicationContext.loadBeanDefinitions >>>>>> (AbstractXmlApplicationContext.java:113) >>>>>> at org.apache.xbean.spring.context. >>>>>> FileSystemXmlApplicationContext.loadBeanDefinitions >>>>>> (FileSystemXmlApplicationContext.java:168) >>>>>> at org.springframework.context.support. >>>>>> AbstractRefreshableApplicationContext.refreshBeanFactory >>>>>> (AbstractRefreshableApplicationContext.java:123) >>>>>> at org.springframework.context.support. >>>>>> AbstractApplicationContext.obtainFreshBeanFactory >>>>>> (AbstractApplicationContext.java:422) >>>>>> at org.springframework.context.support. >>>>>> AbstractApplicationContext.refresh (AbstractApplicationContext.java:352) >>>>>> at org.apache.xbean.spring.context. FileSystemXmlApplicationContext. >>>>>> (FileSystemXmlApplicationContext.java:149) >>>>>> at org.apache.xbean.spring.context. FileSystemXmlApplicationContext. >>>>>> (FileSystemXmlApplicationContext.java:48) >>>>>> at org.apache.directory.server. Service.initLdap (Service.java:113) >>>>>> at org.apache.directory.server. Service.init (Service.java:78) >>>>>> at org.apache.directory.daemon. Bootstrapper.callInit >>>>>> (Bootstrapper.java:154) >>>>>> at org.apache.directory.daemon. TanukiBootstrapper.start >>>>>> (TanukiBootstrapper.java:54) >>>>>> at org.tanukisoftware.wrapper. WrapperManager$12.run >>>>>> (WrapperManager.java:2788) >>>>>> >>>>>> Also I have compiled your code in jar file with eclipse (not with >>>>>> maven) it also attached. >>>>>> >>>>>> Probably mine above actions, could entail, null pointer exception in >>>>>> >>>>>> public void modify (ModifyOperationContext ctx) method. >>>>>> witch i describe in previous letters. >>>>>> >>>>>> But I repeat, operations create, search, delete work normally. >>>>>> >>>>>> May be You can send to me your current version of server.xml, and >>>>>> apacheds-oracle-1.5.5-SNAPSHOT.jar with applied "mar.patch" and >>>>>> "OracleEntryCursorAdaptor.patch" patches, to test modify operation with you >>>>>> files on my environment? >>>>>> >>>>>> Lets summarize: >>>>>> >>>>>> attached apacheds-oracle-1.5.5-SNAPSHOT.jar file i I took from this >>>>>> version of oracle partition apacheds-oracle.tar.gz(\apacheds-oracle\target\) >>>>>> >>>>>> apacheds-oracle-1.5.5-test.jar contains compiled code with taken into >>>>>> consideration changes in OracleEntryCursorAdaptor.java and in >>>>>> OraclePartition.java. >>>>>> >>>>>> combination with_my_changes_server.xml + >>>>>> apacheds-oracle-1.5.5-test.jar works fine for search, delete, create >>>>>> operation. >>>>>> other combinations does not works on my environment. >>>>>> >>>>>> Thank you very much. >>>>>> >>>>>> 25 ноября 2009 г. 18:08 пользователь Andrea Gariboldi < >>>>>> andrea.gariboldi@gmail.com> написал: >>>>>> >>>>>> Hi Mikhail, >>>>>>> did you modified anything else on the class? >>>>>>> >>>>>>> Could you please write to the dev@directory.apache.org, >>>>>>> so that others can see the thread? >>>>>>> >>>>>>> Andrea >>>>>>> >>>>>>> 2009/11/24 Alex Karasulu >>>>>>> >>>>>>> Hey this is great Andrea! Thanks for helping out. But guys this >>>>>>>> should all be going onto the dev mailing list. Can you please forward these >>>>>>>> to the dev list so everyone can see this good interaction? >>>>>>>> >>>>>>>> Thanks, >>>>>>>> Alex >>>>>>>> >>>>>>>> >>>>>>>> 2009/11/24 Andrea Gariboldi >>>>>>>> >>>>>>>>> Could you please attach you OraclePartition.java? >>>>>>>>> >>>>>>>>> Andrea >>>>>>>>> >>>>>>>>> 2009/11/24 Самоделкин Михаил >>>>>>>>> >>>>>>>>>> The key part of log below. And full log in attachment. This trace >>>>>>>>>> appiars only with DEBUG mode in log4j.properties. >>>>>>>>>> >>>>>>>>>> [18:00:36] DEBUG >>>>>>>>>> [org.apache.directory.server.ldap.handlers.LdapRequestHandler] - OTHER: >>>>>>>>>> failed for Modify Request >>>>>>>>>> Object : >>>>>>>>>> '0.9.2342.19200300.100.1.1=dddd,0.9.2342.19200300.100.1.25=supplyon,0.9.2342.19200300.100.1.25=com' >>>>>>>>>> >>>>>>>>>> Modification[0] >>>>>>>>>> Operation : replace >>>>>>>>>> Modification >>>>>>>>>> cn: ssssssss >>>>>>>>>> : null >>>>>>>>>> java.lang.NullPointerException >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.partition.impl.oracle.OraclePartition.modify(OraclePartition.java:321) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.partition.DefaultPartitionNexus.modify(DefaultPartitionNexus.java:845) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.operational.OperationalAttributeInterceptor.modify(OperationalAttributeInterceptor.java:248) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.modify(InterceptorChain.java:1216) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.exception.ExceptionInterceptor.modify(ExceptionInterceptor.java:367) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.modify(InterceptorChain.java:1216) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.authz.DefaultAuthorizationInterceptor.modify(DefaultAuthorizationInterceptor.java:273) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.modify(InterceptorChain.java:1216) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.authz.AciAuthorizationInterceptor.modify(AciAuthorizationInterceptor.java:565) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.modify(InterceptorChain.java:1216) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.referral.ReferralInterceptor.modify(ReferralInterceptor.java:403) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.modify(InterceptorChain.java:1216) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.authn.AuthenticationInterceptor.modify(AuthenticationInterceptor.java:336) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.modify(InterceptorChain.java:1216) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.normalization.NormalizationInterceptor.modify(NormalizationInterceptor.java:146) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.interceptor.InterceptorChain.modify(InterceptorChain.java:821) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.DefaultOperationManager.modify(DefaultOperationManager.java:691) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.DefaultCoreSession.modify(DefaultCoreSession.java:829) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.DefaultCoreSession.modify(DefaultCoreSession.java:815) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.ldap.handlers.ModifyHandler.handle(ModifyHandler.java:56) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.ldap.handlers.ModifyHandler.handle(ModifyHandler.java:39) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.ldap.handlers.LdapRequestHandler.handleMessage(LdapRequestHandler.java:176) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.ldap.handlers.LdapRequestHandler.handleMessage(LdapRequestHandler.java:56) >>>>>>>>>> at >>>>>>>>>> org.apache.mina.handler.demux.DemuxingIoHandler.messageReceived(DemuxingIoHandler.java:232) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.ldap.LdapProtocolHandler.messageReceived(LdapProtocolHandler.java:194) >>>>>>>>>> at >>>>>>>>>> org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.messageReceived(DefaultIoFilterChain.java:721) >>>>>>>>>> at >>>>>>>>>> org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:433) >>>>>>>>>> at >>>>>>>>>> org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:47) >>>>>>>>>> at >>>>>>>>>> org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:801) >>>>>>>>>> at >>>>>>>>>> org.apache.mina.core.filterchain.IoFilterEvent.fire(IoFilterEvent.java:71) >>>>>>>>>> at org.apache.mina.core.session.IoEvent.run(IoEvent.java:63) >>>>>>>>>> at >>>>>>>>>> org.apache.mina.filter.executor.UnorderedThreadPoolExecutor$Worker.runTask(UnorderedThreadPoolExecutor.java:480) >>>>>>>>>> at >>>>>>>>>> org.apache.mina.filter.executor.UnorderedThreadPoolExecutor$Worker.run(UnorderedThreadPoolExecutor.java:434) >>>>>>>>>> at java.lang.Thread.run(Unknown Source) >>>>>>>>>> [18:00:36] DEBUG >>>>>>>>>> [org.apache.directory.shared.ldap.codec.TwixTransformer] - Transforming >>>>>>>>>> message type MODIFY_RESPONSE >>>>>>>>>> [18:00:36] DEBUG >>>>>>>>>> [org.apache.directory.shared.ldap.codec.TwixTransformer] - Transformed >>>>>>>>>> message : LdapMessage >>>>>>>>>> message Id : 23 >>>>>>>>>> Modify Response >>>>>>>>>> Ldap Result >>>>>>>>>> Result code : (OTHER) other >>>>>>>>>> Matched DN : '' >>>>>>>>>> Error message : 'OTHER: failed for Modify Request >>>>>>>>>> Object : >>>>>>>>>> '0.9.2342.19200300.100.1.1=dddd,0.9.2342.19200300.100.1.25=supplyon,0.9.2342.19200300.100.1.25=com' >>>>>>>>>> >>>>>>>>>> Modification[0] >>>>>>>>>> Operation : replace >>>>>>>>>> Modification >>>>>>>>>> cn: ssssssss >>>>>>>>>> : null: >>>>>>>>>> java.lang.NullPointerException >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.partition.impl.oracle.OraclePartition.modify(OraclePartition.java:321) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.partition.DefaultPartitionNexus.modify(DefaultPartitionNexus.java:845) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.operational.OperationalAttributeInterceptor.modify(OperationalAttributeInterceptor.java:248) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.modify(InterceptorChain.java:1216) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.exception.ExceptionInterceptor.modify(ExceptionInterceptor.java:367) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.modify(InterceptorChain.java:1216) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.authz.DefaultAuthorizationInterceptor.modify(DefaultAuthorizationInterceptor.java:273) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.modify(InterceptorChain.java:1216) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.authz.AciAuthorizationInterceptor.modify(AciAuthorizationInterceptor.java:565) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.modify(InterceptorChain.java:1216) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.referral.ReferralInterceptor.modify(ReferralInterceptor.java:403) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.modify(InterceptorChain.java:1216) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.authn.AuthenticationInterceptor.modify(AuthenticationInterceptor.java:336) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.modify(InterceptorChain.java:1216) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.normalization.NormalizationInterceptor.modify(NormalizationInterceptor.java:146) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.interceptor.InterceptorChain.modify(InterceptorChain.java:821) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.DefaultOperationManager.modify(DefaultOperationManager.java:691) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.DefaultCoreSession.modify(DefaultCoreSession.java:829) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.DefaultCoreSession.modify(DefaultCoreSession.java:815) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.ldap.handlers.ModifyHandler.handle(ModifyHandler.java:56) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.ldap.handlers.ModifyHandler.handle(ModifyHandler.java:39) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.ldap.handlers.LdapRequestHandler.handleMessage(LdapRequestHandler.java:176) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.ldap.handlers.LdapRequestHandler.handleMessage(LdapRequestHandler.java:56) >>>>>>>>>> at >>>>>>>>>> org.apache.mina.handler.demux.DemuxingIoHandler.messageReceived(DemuxingIoHandler.java:232) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.ldap.LdapProtocolHandler.messageReceived(LdapProtocolHandler.java:194) >>>>>>>>>> at >>>>>>>>>> org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.messageReceived(DefaultIoFilterChain.java:721) >>>>>>>>>> at >>>>>>>>>> org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:433) >>>>>>>>>> at >>>>>>>>>> org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:47) >>>>>>>>>> at >>>>>>>>>> org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:801) >>>>>>>>>> at >>>>>>>>>> org.apache.mina.core.filterchain.IoFilterEvent.fire(IoFilterEvent.java:71) >>>>>>>>>> at org.apache.mina.core.session.IoEvent.run(IoEvent.java:63) >>>>>>>>>> at >>>>>>>>>> org.apache.mina.filter.executor.UnorderedThreadPoolExecutor$Worker.runTask(UnorderedThreadPoolExecutor.java:480) >>>>>>>>>> at >>>>>>>>>> org.apache.mina.filter.executor.UnorderedThreadPoolExecutor$Worker.run(UnorderedThreadPoolExecutor.java:434) >>>>>>>>>> at java.lang.Thread.run(Unknown Source) >>>>>>>>>> ' >>>>>>>>>> >>>>>>>>>> [18:00:36] DEBUG >>>>>>>>>> [org.apache.directory.shared.ldap.codec.TwixEncoder] - Encoding this >>>>>>>>>> LdapMessage : LdapMessage >>>>>>>>>> message Id : 23 >>>>>>>>>> Modify Response >>>>>>>>>> Ldap Result >>>>>>>>>> Result code : (OTHER) other >>>>>>>>>> Matched DN : '' >>>>>>>>>> Error message : 'OTHER: failed for Modify Request >>>>>>>>>> Object : >>>>>>>>>> '0.9.2342.19200300.100.1.1=dddd,0.9.2342.19200300.100.1.25=supplyon,0.9.2342.19200300.100.1.25=com' >>>>>>>>>> >>>>>>>>>> Modification[0] >>>>>>>>>> Operation : replace >>>>>>>>>> Modification >>>>>>>>>> cn: ssssssss >>>>>>>>>> : null: >>>>>>>>>> java.lang.NullPointerException >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.partition.impl.oracle.OraclePartition.modify(OraclePartition.java:321) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.partition.DefaultPartitionNexus.modify(DefaultPartitionNexus.java:845) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.operational.OperationalAttributeInterceptor.modify(OperationalAttributeInterceptor.java:248) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.modify(InterceptorChain.java:1216) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.exception.ExceptionInterceptor.modify(ExceptionInterceptor.java:367) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.modify(InterceptorChain.java:1216) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.authz.DefaultAuthorizationInterceptor.modify(DefaultAuthorizationInterceptor.java:273) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.modify(InterceptorChain.java:1216) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.authz.AciAuthorizationInterceptor.modify(AciAuthorizationInterceptor.java:565) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.modify(InterceptorChain.java:1216) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.referral.ReferralInterceptor.modify(ReferralInterceptor.java:403) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.modify(InterceptorChain.java:1216) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.authn.AuthenticationInterceptor.modify(AuthenticationInterceptor.java:336) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.modify(InterceptorChain.java:1216) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.normalization.NormalizationInterceptor.modify(NormalizationInterceptor.java:146) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.interceptor.InterceptorChain.modify(InterceptorChain.java:821) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.DefaultOperationManager.modify(DefaultOperationManager.java:691) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.DefaultCoreSession.modify(DefaultCoreSession.java:829) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.core.DefaultCoreSession.modify(DefaultCoreSession.java:815) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.ldap.handlers.ModifyHandler.handle(ModifyHandler.java:56) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.ldap.handlers.ModifyHandler.handle(ModifyHandler.java:39) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.ldap.handlers.LdapRequestHandler.handleMessage(LdapRequestHandler.java:176) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.ldap.handlers.LdapRequestHandler.handleMessage(LdapRequestHandler.java:56) >>>>>>>>>> at >>>>>>>>>> org.apache.mina.handler.demux.DemuxingIoHandler.messageReceived(DemuxingIoHandler.java:232) >>>>>>>>>> at >>>>>>>>>> org.apache.directory.server.ldap.LdapProtocolHandler.messageReceived(LdapProtocolHandler.java:194) >>>>>>>>>> at >>>>>>>>>> org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.messageReceived(DefaultIoFilterChain.java:721) >>>>>>>>>> at >>>>>>>>>> org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:433) >>>>>>>>>> at >>>>>>>>>> org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:47) >>>>>>>>>> at >>>>>>>>>> org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:801) >>>>>>>>>> at >>>>>>>>>> org.apache.mina.core.filterchain.IoFilterEvent.fire(IoFilterEvent.java:71) >>>>>>>>>> at org.apache.mina.core.session.IoEvent.run(IoEvent.java:63) >>>>>>>>>> at >>>>>>>>>> org.apache.mina.filter.executor.UnorderedThreadPoolExecutor$Worker.runTask(UnorderedThreadPoolExecutor.java:480) >>>>>>>>>> at >>>>>>>>>> org.apache.mina.filter.executor.UnorderedThreadPoolExecutor$Worker.run(UnorderedThreadPoolExecutor.java:434) >>>>>>>>>> at java.lang.Thread.run(Unknown Source) >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Best Regards, >>>>>>>>>> *Mikhail Samadzelkin* >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> 2009/11/24 Andrea Gariboldi >>>>>>>>>> >>>>>>>>>>> Can you check the apacheds server log files for exceptions? >>>>>>>>>>> I cannot reproduce the error in my env.. >>>>>>>>>>> >>>>>>>>>>> Andrea >>>>>>>>>>> >>>>>>>>>>> 2009/11/24 Самоделкин Михаил >>>>>>>>>>> >>>>>>>>>>>> Thank you very much Andrea, now this method looks like below, >>>>>>>>>>>> >>>>>>>>>>>> public void moveAndRename(final >>>>>>>>>>>> MoveAndRenameOperationContext ctx) throws Exception { >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> executeDml("begin >>>>>>>>>>>> partition_facade.move_and_rename(?,?,?,?); end;", new Object[] { >>>>>>>>>>>> >>>>>>>>>>>> toReversedDn(ctx.getParent()), >>>>>>>>>>>> >>>>>>>>>>>> ctx.getNewRdn().getNormName(), >>>>>>>>>>>> >>>>>>>>>>>> ctx.getNewRdn().getUpName() + "," + ctx.getParent().getUpName(), >>>>>>>>>>>> >>>>>>>>>>>> toReversedDn(ctx.getDn()) >>>>>>>>>>>> }); >>>>>>>>>>>> } >>>>>>>>>>>> >>>>>>>>>>>> and not fails. >>>>>>>>>>>> But I steel have a problem with update an LDAP entry. Server >>>>>>>>>>>> throw an exception, about which I wrote in the first letter (javax.naming. >>>>>>>>>>>> NamingException: [LDAP: error code 80 - OTHER: failed for Modify Request). >>>>>>>>>>>> >>>>>>>>>>>> To reproduce this exception, it is enough to create LDAP >>>>>>>>>>>> entry from scratch in Apache Directory Studio in any place of DIT, and try >>>>>>>>>>>> to modify any attribute. The same for any java LDAP API (novell, jndi, >>>>>>>>>>>> etc...). For example I create the user in Apache Directory Studio with >>>>>>>>>>>> objectClass "inetOrgPerson" and modify his "cn" or "sn" attribute. >>>>>>>>>>>> >>>>>>>>>>>> Error while modifying value >>>>>>>>>>>> >>>>>>>>>>>> [LDAP: error code 80 - OTHER: failed for Modify Request >>>>>>>>>>>> Object: ' 0.9.2342.19200300.100.1.1=dddd, >>>>>>>>>>>> 0.9.2342.19200300.100.1.25=foo, 0.9.2342.19200300.100.1.25=com ' >>>>>>>>>>>> Modification [0] >>>>>>>>>>>> Operation: replace >>>>>>>>>>>> Modification >>>>>>>>>>>> cn: fsdfdsds >>>>>>>>>>>> : null] >>>>>>>>>>>> >>>>>>>>>>>> [LDAP: error code 80 - OTHER: failed for Modify Request >>>>>>>>>>>> Object: ' 0.9.2342.19200300.100.1.1=dddd, >>>>>>>>>>>> 0.9.2342.19200300.100.1.25=foo, 0.9.2342.19200300.100.1.25=com ' >>>>>>>>>>>> Modification [0] >>>>>>>>>>>> Operation: replace >>>>>>>>>>>> Modification >>>>>>>>>>>> cn: fsdfdsds >>>>>>>>>>>> : null] >>>>>>>>>>>> >>>>>>>>>>>> Thank you very much again. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Best Regards, >>>>>>>>>>>> *Mikhail Samadzelkin* >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> 2009/11/24 Andrea Gariboldi >>>>>>>>>>>> >>>>>>>>>>>>> To apply the patch simply: >>>>>>>>>>>>> cd apacheds-oracle >>>>>>>>>>>>> patch -p0 < mar.patch >>>>>>>>>>>>> mvn compile >>>>>>>>>>>>> mvn package >>>>>>>>>>>>> ... >>>>>>>>>>>>> >>>>>>>>>>>>> Andrea >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> 2009/11/24 Andrea Gariboldi >>>>>>>>>>>>> >>>>>>>>>>>>>> Ok Mikhail, >>>>>>>>>>>>>> i see the problem: when partition_facade >>>>>>>>>>>>>> was introduced the moveAndRename operation was not >>>>>>>>>>>>>> tested so i have to patch this method. The reason why the >>>>>>>>>>>>>> params are different is because there was an underlying >>>>>>>>>>>>>> modification in the way the partition works with upDns (user >>>>>>>>>>>>>> provided DN)... >>>>>>>>>>>>>> In the last version was introduced (as it should be) the >>>>>>>>>>>>>> storage >>>>>>>>>>>>>> of the DN in the form the user provieded it (DN.UPDN column). >>>>>>>>>>>>>> The problem should only hit this method. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Actually i've a problem on my laptop so i cannot test the >>>>>>>>>>>>>> patch, >>>>>>>>>>>>>> that i am going to release by the end of this week (once i >>>>>>>>>>>>>> tested it), but you can >>>>>>>>>>>>>> apply the patch attached to check if solves your problem now. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Cheers, >>>>>>>>>>>>>> >>>>>>>>>>>>>> Andrea >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> 2009/11/24 Самоделкин Михаил >>>>>>>>>>>>>> >>>>>>>>>>>>>>> I have an ApacheDS 1.5.5and this >>>>>>>>>>>>>>> version of oracle partition apacheds-oracle.tar.gz >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Best Regards, >>>>>>>>>>>>>>> *Mikhail Samadzelkin* >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> 2009/11/24 Andrea Gariboldi >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Of course you have an old version. >>>>>>>>>>>>>>>> I'am going to find you the right one. >>>>>>>>>>>>>>>> Which release of Apache DS are you using? >>>>>>>>>>>>>>>> Andrea >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> 2009/11/24 Самоделкин Михаил >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Hello Andrea, Alex. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> I would like to use your oracle partition for ApacheDS in >>>>>>>>>>>>>>>>> my application, search works fine, >>>>>>>>>>>>>>>>> but at testing, many errors have got out. For example does >>>>>>>>>>>>>>>>> not work update LDAP entry, and throws an exception like (javax.naming. >>>>>>>>>>>>>>>>> NamingException: [LDAP: error code 80 - OTHER: failed for Modify Request). >>>>>>>>>>>>>>>>> And there is not a conformity in count of parameters in caused from java >>>>>>>>>>>>>>>>> code PL-SQL procedure. For example in class OraclePartition { >>>>>>>>>>>>>>>>> ... >>>>>>>>>>>>>>>>> public void moveAndRename (MoveAndRenameOperationContext >>>>>>>>>>>>>>>>> ctx) >>>>>>>>>>>>>>>>> throws Exception >>>>>>>>>>>>>>>>> { >>>>>>>>>>>>>>>>> executeDml ("begin partition_facade.move_and_rename >>>>>>>>>>>>>>>>> (?????); end;", new Object [] { >>>>>>>>>>>>>>>>> toReversedDn (ctx.getParent ()), ctx.getNewRdn >>>>>>>>>>>>>>>>> ().getNormName (), ctx.getParent ().getUpName (), ctx.getNewRdn ().getUpName >>>>>>>>>>>>>>>>> (), toReversedDn (ctx.getDn ()) >>>>>>>>>>>>>>>>> }); >>>>>>>>>>>>>>>>> } >>>>>>>>>>>>>>>>> ... >>>>>>>>>>>>>>>>> } >>>>>>>>>>>>>>>>> in this moveAndRename method, procedure "move_and_rename" >>>>>>>>>>>>>>>>> takes 5 parametres >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> but in schema.sql file, this procedure takes 4 parametres >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> procedure move_and_rename (p_parent varchar2, p_rdn >>>>>>>>>>>>>>>>> varchar2, p_new_updn varchar2, p_dn varchar2) >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Could you tell me please, is it possible i have the old >>>>>>>>>>>>>>>>> version of a code( >>>>>>>>>>>>>>>>> http://issues.apache.org/jira/browse/DIRSERVER-1345), or >>>>>>>>>>>>>>>>> the code simply was not tested on update? >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> PS. tested on Oracle 10g, and ApacheDS 1.5.5 >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Thank you in advance. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Best Regards, >>>>>>>>>>>>>>>>> *Mikhail Samadzelkin* >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> Alex Karasulu >>>>>>>> My Blog :: http://www.jroller.com/akarasulu/ >>>>>>>> Apache Directory Server :: http://directory.apache.org >>>>>>>> Apache MINA :: http://mina.apache.org >>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> >