import java.io.File;

import java.util.List;

 

import org.apache.directory.api.ldap.model.name.Dn;

import org.apache.directory.api.ldap.model.schema.SchemaManager;

import org.apache.directory.api.ldap.model.schema.registries.SchemaLoader;

import org.apache.directory.api.ldap.schema.extractor.SchemaLdifExtractor;

import 
org.apache.directory.api.ldap.schema.extractor.impl.DefaultSchemaLdifExtractor;

import org.apache.directory.api.ldap.schema.loader.LdifSchemaLoader;

import org.apache.directory.api.ldap.schema.manager.impl.DefaultSchemaManager;

 

import org.apache.directory.api.util.exception.Exceptions;

import org.apache.directory.server.constants.ServerDNConstants;

import org.apache.directory.server.core.DefaultDirectoryService;

import org.apache.directory.server.core.api.CacheService;

import org.apache.directory.server.core.api.DirectoryService;

import org.apache.directory.server.core.api.DnFactory;

import org.apache.directory.server.core.api.InstanceLayout;

import org.apache.directory.server.core.api.schema.SchemaPartition;

import org.apache.directory.server.core.partition.impl.btree.jdbm.JdbmPartition;

import org.apache.directory.server.core.partition.ldif.LdifPartition;

import org.apache.directory.server.core.shared.DefaultDnFactory;

import org.apache.directory.server.i18n.I18n;

import org.apache.directory.server.ldap.LdapServer;

import org.apache.directory.server.protocol.shared.transport.TcpTransport;

import org.apache.logging.log4j.LogManager;

import org.apache.logging.log4j.Logger;

 

/**

* A simple example exposing how to embed Apache Directory Server from the

* bleeding trunk into an application.

* 

 * @author <a href="mailto:[email protected]";>Apache Directory

*         Project</a>

* @version $Rev$, $Date$

*/

 

 

public class EmbeddedADS  {

 

    

    private static final Logger LOGGER = 
LogManager.getLogger(EmbeddedADS.class);

    /** The directory service */

    private DirectoryService service;

 

    /** The LDAP server */

    private LdapServer server;

    

    private static EmbeddedADS instance;

    

    

    

    public static EmbeddedADS getInstance(){

        if(instance == null){

            instance= new EmbeddedADS();

        }

        return instance;

    }

 

    /**

     * initialize the schema manager and add the schema partition to diectory

     * service

     * 

     * @throws Exception

     *             if the schema LDIF files are not found on the classpath

     */

    private void initSchemaPartition() throws Exception {

        final InstanceLayout instanceLayout = this.service.getInstanceLayout();

 

        final File schemaPartitionDirectory = new File(

                instanceLayout.getPartitionsDirectory(), "schema");

 

        // Extract the schema on disk (a brand new one) and load the registries

        if (schemaPartitionDirectory.exists()) {

            LOGGER.debug("schema partition already exists, skipping schema 
extraction");

        } else {

            final SchemaLdifExtractor extractor = new 
DefaultSchemaLdifExtractor(

                    instanceLayout.getPartitionsDirectory());

            extractor.extractOrCopy();

        }

 

        final SchemaLoader loader = new LdifSchemaLoader(

                schemaPartitionDirectory);

        final SchemaManager schemaManager = new DefaultSchemaManager(loader);

 

        // final DnFactory dnFactory = new

        // DefaultDnFactory(schemaManager,service.getDnFactory());

 

        // We have to load the schema now, otherwise we won't be able

        // to initialize the Partitions, as we won't be able to parse

        // and normalize their suffix Dn

        schemaManager.loadAllEnabled();

 

        final List<Throwable> errors = schemaManager.getErrors();

 

        if (errors.size() != 0) {

            throw new Exception(I18n.err(I18n.ERR_317,

                    Exceptions.printErrors(errors)));

        }

 

        this.service.setSchemaManager(schemaManager);

 

        // Init the LdifPartition with schema

       DnFactory dnFactory = new DefaultDnFactory(schemaManager, 
this.service.getCacheService().getCache("dnCache"));

       this.service.setDnFactory(dnFactory);

        final LdifPartition schemaLdifPartition = new LdifPartition(

                schemaManager,  service.getDnFactory());

 

        schemaLdifPartition.setPartitionPath(schemaPartitionDirectory.toURI());

 

        // The schema partition

        final SchemaPartition schemaPartition = new SchemaPartition(

                schemaManager);

        schemaPartition.setWrappedPartition(schemaLdifPartition);

        this.service.setSchemaPartition(schemaPartition);

    }

 

    /**

     * Initialize the server. It creates the partition, adds the index, and

     * injects the context entries for the created partitions.

     * 

     * @param workDir

     *            the directory to be used for storing the data

     * @throws Exception

     *             if there were some problems while initializing the system

     */

    private void initDirectoryService(final File workDir) throws Exception {

        // Initialize the LDAP service

        this.service = new DefaultDirectoryService();

        this.service.setInstanceLayout(new InstanceLayout(workDir));

 

        final CacheService cacheService = new CacheService();

        cacheService.initialize(this.service.getInstanceLayout());

 

        this.service.setCacheService(cacheService);

 

        // first load the schema

        this.initSchemaPartition();

 

        // then the system partition

        // this is a MANDATORY partition

        // DO NOT add this via addPartition() method, trunk code complains about

        // duplicate partition

        // while initializing

        final JdbmPartition systemPartition = new JdbmPartition(

                this.service.getSchemaManager(), service.getDnFactory());

        systemPartition.setId("system");

        systemPartition.setPartitionPath(new File(this.service

                .getInstanceLayout().getPartitionsDirectory(), systemPartition

                .getId()).toURI());

        systemPartition.setSuffixDn(new Dn(ServerDNConstants.SYSTEM_DN));

        systemPartition.setSchemaManager(this.service.getSchemaManager());

 

        // mandatory to call this method to set the system partition

        // Note: this system partition might be removed from trunk

        this.service.setSystemPartition(systemPartition);

 

        // Disable the ChangeLog system

        this.service.getChangeLog().setEnabled(false);

        this.service.setDenormalizeOpAttrsEnabled(true);

        this.service.setShutdownHookEnabled(true);

 

        // And start the service

        this.service.startup();

 

        // We are all done !

    }

    

    public EmbeddedADS()  {

      

    }

 

    /**

     * Creates a new instance of EmbeddedADS. It initializes the directory

     * service.

     * 

     * @throws Exception

     *             If something went wrong

     */

    public void init(final File workDir) throws Exception {

        if (!workDir.exists()) {

            workDir.mkdirs();

            this.initDirectoryService(workDir);

            this.service.shutdown();

        }

 

        this.initDirectoryService(workDir);

    }

 

    /**

     * starts the LdapServer

     * 

     * @throws Exception

     */

    public void startServer(File workDir, String certFilePath,int serverPort) 
throws Exception {

        init(workDir);

        this.server = new LdapServer();

        TcpTransport transports = new TcpTransport(serverPort);

       

        this.server.setTransports(transports);

        this.server.setDirectoryService(this.service);

        this.server.setKeystoreFile(certFilePath);

        

        

        this.server.setCertificatePassword("changeit");

       this.server.loadKeyStore();

        transports.setEnableSSL(true);

        LOGGER.debug("ssl enabled {}",server.isEnableLdaps(transports));

        

 

        this.server.start();

       

 

        LOGGER.debug("The server is running.");

    }

    

    public void shutdownServer() throws Exception {

        

      

        if(this.server != null){

            try {

                this.server.stop();

                LOGGER.debug("LDAP Server stop done");

            } catch (Exception e) {

              LOGGER.error("exception in stop server",e);

            }

        }

       

       

        if(this.service != null){

            try {

                this.service.shutdown();

                LOGGER.debug("Dir Service shutdwon done");

            } catch (Exception e) {

                LOGGER.error("exception in shutdown dir service",e);

            }

        }

        

       

    }

    

}

 

From: Kiran Ayyagari [mailto:[email protected]] 
Sent: Monday, May 18, 2015 10:46 PM
To: [email protected]
Cc: Bajaj, Yogesh
Subject: Re: Enable SSL for Embed Apache DS Server

 

 

 

On Tue, May 19, 2015 at 10:42 AM, Bajaj, Yogesh <[email protected]> wrote:


I changed code to use port 10636. Still connection time out is happening on 
bind call. Client code is below.

you need to give your code where you embedded the server, if it contains any 
sensitive information
please remove those lines and send

        private static void test1(){
                try( LdapConnection connection = new LdapNetworkConnection( 
"vsvphxasldev01", 10636,true);) {
        
                    connection.bind( "uid=admin,ou=system", "secret" );  // 
here connection time out is happening
                        EntryCursor cursor = connection.search( 
"ou=configuration", "(&(objectclass=*))", SearchScope.SUBTREE, "*" );
        
                        while ( cursor.next() ){
                            Entry entry = cursor.get();
        
                            System.out.println(entry);
                        }
                        connection.unBind();
                } catch (LdapException | CursorException | IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();

                }
            }
        
        -----Original Message-----
        From: Kiran Ayyagari [mailto:[email protected]]
        Sent: Friday, May 15, 2015 8:24 PM
        To: [email protected]
        Subject: Re: Enable SSL for Embed Apache DS Server
        
        On Sat, May 16, 2015 at 4:28 AM, Bajaj, Yogesh <[email protected]> 
wrote:
        
        > Thanks for your reply and help.
        >
        > Local System :-
        >
        > For embed server, ssl port is 10399. I am able to connect it using
        > Apache Ldap Studio browser as well as
        
        are you sure 10389 is your ssl port? just double checking cause this is 
the default non-ssl port in ApacheDS show us your client code part where you 
are attempting to connect
        
        > do search using LDAP client api successfully locally. For LDAP client
        > api, I installed certificates in key store to avoid ssl handshake 
error.
        >
        > On Client dev system :-
        > Neither apacheds  or nor ldap client api prog are able to connect to
        > embed ldap server on client m/c.
        > I am getting below exception and ssl trace log is below :-
        >
        >
        > trustStore is: C:\trusted.ks
        > trustStore type is : jks
        > trustStore provider is :
        > init truststore
        > adding as trusted cert:
        >   Subject: CN=ess-tools, OU=ApacheDS, O=ASF, C=US
        >   Issuer:  CN=ess-tools, OU=ApacheDS, O=ASF, C=US
        >   Algorithm: RSA; Serial number: 0x3ddca171
        >   Valid from Thu May 14 00:14:42 EDT 2015 until Sat May 13 00:14:42
        > EDT
        > 2017
        >
        > 2015-05-15 16:22:16,531 DEBUG Using default SystemClock for timestamps
        > 2015-05-15 16:22:16:547 LdapConnectionConfig [DEBUG] found
        > X509TrustManager sun.security.ssl.X509TrustManagerImpl@28c75ad4
        > 2015-05-15 16:22:18:139 DefaultLdapCodecService [INFO] Registered
        > pre-bundled control factory: 1.3.6.1.4.1.18060.0.0.1
        > 2015-05-15 16:22:18:203 DefaultLdapCodecService [INFO] Registered
        > pre-bundled control factory: 2.16.840.1.113730.3.4.7
        > 2015-05-15 16:22:18:234 DefaultLdapCodecService [INFO] Registered
        > pre-bundled control factory: 2.16.840.1.113730.3.4.2
        > 2015-05-15 16:22:18:265 DefaultLdapCodecService [INFO] Registered
        > pre-bundled control factory: 2.16.840.1.113730.3.4.18
        > 2015-05-15 16:22:18:406 DefaultLdapCodecService [INFO] Registered
        > pre-bundled control factory: 1.2.840.113556.1.4.319
        > 2015-05-15 16:22:18:468 DefaultLdapCodecService [INFO] Registered
        > pre-bundled control factory: 2.16.840.1.113730.3.4.3
        > 2015-05-15 16:22:18:499 DefaultLdapCodecService [INFO] Registered
        > pre-bundled control factory: 1.3.6.1.4.1.4203.1.10.1
        > 2015-05-15 16:22:18:577 CodecFactoryUtil [INFO] Registered pre-bundled
        > control factory: 1.3.6.1.4.1.18060.0.0.1
        > 2015-05-15 16:22:18:577 CodecFactoryUtil [INFO] Registered pre-bundled
        > control factory: 2.16.840.1.113730.3.4.7
        > 2015-05-15 16:22:18:577 CodecFactoryUtil [INFO] Registered pre-bundled
        > control factory: 2.16.840.1.113730.3.4.2
        > 2015-05-15 16:22:18:577 CodecFactoryUtil [INFO] Registered pre-bundled
        > control factory: 2.16.840.1.113730.3.4.18
        > 2015-05-15 16:22:18:577 CodecFactoryUtil [INFO] Registered pre-bundled
        > control factory: 1.2.840.113556.1.4.319
        > 2015-05-15 16:22:18:577 CodecFactoryUtil [INFO] Registered pre-bundled
        > control factory: 2.16.840.1.113730.3.4.3
        > 2015-05-15 16:22:18:577 CodecFactoryUtil [INFO] Registered pre-bundled
        > control factory: 1.3.6.1.4.1.4203.1.10.1
        > 2015-05-15 16:22:18:671 CodecFactoryUtil [INFO] Registered pre-bundled
        > control factory: 1.3.6.1.4.1.42.2.27.8.5.1
        > 2015-05-15 16:22:18:936 CodecFactoryUtil [INFO] Registered pre-bundled
        > control factory: 2.16.840.1.113730.3.4.9
        > 2015-05-15 16:22:18:983 CodecFactoryUtil [INFO] Registered pre-bundled
        > control factory: 2.16.840.1.113730.3.4.10
        > 2015-05-15 16:22:19:061 CodecFactoryUtil [INFO] Registered pre-bundled
        > control factory: 1.3.6.1.4.1.4203.1.9.1.3
        > 2015-05-15 16:22:19:108 CodecFactoryUtil [INFO] Registered pre-bundled
        > control factory: 1.3.6.1.4.1.4203.1.9.1.4
        > 2015-05-15 16:22:19:170 CodecFactoryUtil [INFO] Registered pre-bundled
        > control factory: 1.3.6.1.4.1.4203.1.9.1.1
        > 2015-05-15 16:22:19:170 CodecFactoryUtil [INFO] Registered pre-bundled
        > control factory: 1.3.6.1.4.1.4203.1.9.1.2
        > 2015-05-15 16:22:19:233 CodecFactoryUtil [INFO] Registered pre-bundled
        > control factory: 1.2.840.113556.1.4.473
        > 2015-05-15 16:22:19:265 CodecFactoryUtil [INFO] Registered pre-bundled
        > control factory: 1.2.840.113556.1.4.474
        > 2015-05-15 16:22:19:296 CodecFactoryUtil [INFO] Registered pre-bundled
        > control factory: 1.2.840.113556.1.4.841
        > 2015-05-15 16:22:19:467 CodecFactoryUtil [INFO] Registered pre-bundled
        > extended operation factory: 1.3.6.1.1.8
        > 2015-05-15 16:22:19:686 CodecFactoryUtil [INFO] Registered pre-bundled
        > extended operation factory: 1.3.6.1.4.1.18060.0.1.8
        > 2015-05-15 16:22:19:857 CodecFactoryUtil [INFO] Registered pre-bundled
        > extended operation factory: 1.3.6.1.4.1.18060.0.1.3
        > 2015-05-15 16:22:20:029 CodecFactoryUtil [INFO] Registered pre-bundled
        > extended operation factory: 1.3.6.1.4.1.18060.0.1.6
        > 2015-05-15 16:22:20:123 CodecFactoryUtil [INFO] Registered pre-bundled
        > extended operation factory: 1.3.6.1.4.1.18060.0.1.5
        > 2015-05-15 16:22:20:294 CodecFactoryUtil [INFO] Registered pre-bundled
        > extended operation factory: 1.3.6.1.4.1.4203.1.11.1
        > 2015-05-15 16:22:20:410 CodecFactoryUtil [INFO] Registered pre-bundled
        > extended operation factory: 1.3.6.1.4.1.4203.1.11.3
        > 2015-05-15 16:22:20:551 CodecFactoryUtil [INFO] Registered pre-bundled
        > extended operation factory: 1.3.6.1.4.1.1466.20037 trigger seeding of
        > SecureRandom done seeding SecureRandom
        > 2015-05-15 16:23:29:440 LdapNetworkConnection [DEBUG] ------>>
        > Connection
        > error: Connection timed out: no further information
        > 
org.apache.directory.ldap.client.api.exception.InvalidConnectionException:
        > Cannot connect to the server: Connection timed out: no further 
information
        >         at
        > 
org.apache.directory.ldap.client.api.LdapNetworkConnection.connect(LdapNetworkConnection.java:658)
        >         at
        > 
org.apache.directory.ldap.client.api.LdapNetworkConnection.bindAsync(LdapNetworkConnection.java:1268)
        >         at
        > 
org.apache.directory.ldap.client.api.LdapNetworkConnection.bind(LdapNetworkConnection.java:1188)
        >         at
        > 
org.apache.directory.ldap.client.api.AbstractLdapConnection.bind(AbstractLdapConnection.java:127)
        >         at
        > 
org.apache.directory.ldap.client.api.AbstractLdapConnection.bind(AbstractLdapConnection.java:112)
        >         at com.whg.ess.tool.ldap.LdapSvc.test1(LdapSvc.java:68)
        >         at com.whg.ess.tool.ldap.LdapSvc.main(LdapSvc.java:27)
        > Caused by: java.net.ConnectException: Connection timed out: no further
        > information
        >         at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
        >         at
        > sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:739)
        >         at
        > 
org.apache.mina.transport.socket.nio.NioSocketConnector.finishConnect(NioSocketConnector.java:221)
        >         at
        > 
org.apache.mina.transport.socket.nio.NioSocketConnector.finishConnect(NioSocketConnector.java:47)
        >         at
        > 
org.apache.mina.core.polling.AbstractPollingIoConnector.processConnections(AbstractPollingIoConnector.java:459)
        >         at
        > 
org.apache.mina.core.polling.AbstractPollingIoConnector.access$700(AbstractPollingIoConnector.java:65)
        >         at
        > 
org.apache.mina.core.polling.AbstractPollingIoConnector$Connector.run(AbstractPollingIoConnector.java:527)
        >         at
        > 
org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
        >         at
        > 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        >         at
        > 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        >         at java.lang.Thread.run(Thread.java:745)
        >
        >
        > Thanks
        > Yogesh Bajaj
        >
        >
        > -----Original Message-----
        > From: Emmanuel Lécharny [mailto:[email protected]]
        > Sent: Wednesday, May 13, 2015 5:42 PM
        > To: [email protected]
        > Subject: Re: Enable SSL for Embed Apache DS Server
        >
        > Le 13/05/15 22:03, Bajaj, Yogesh a écrit :
        > > Hi Friends,
        > >
        > > I set up Apache DS embed server. I am using one of aspect provided
        > > in
        > JIRA ticket  to avoid multiple resources issue.
        > > This is working fine on local laptop. Now I want to enable SSL for
        > > embed
        > LDAP server  as once I am deploying it on client dev server , I am not
        > able to connect it. My client dev server requires ssh connection.
        >
        > SSL and SSH are two different things.
        >
        > The code you provided is correct. The server should be SSL enabled.
        > have you tried to connect to the server on port 10636 (or whatever
        > value serverPort contains) ?
        > >
        > > Please advise, how to enable SSL for embed LDAP server?. I already
        > > did
        > below in embed ldap server.
        > >
        > > transports.setEnableSSL(true);
        > >
        > > I am using latest Apache DS version 2.0.0-M20.
        > >
        > >
        > > Embed LDAP server java file :-
        > >
        > > import java.io.File;
        > > import java.util.List;
        > >
        > > import org.apache.directory.api.ldap.model.name.Dn;
        > > import org.apache.directory.api.ldap.model.schema.SchemaManager;
        > > import
        > > org.apache.directory.api.ldap.model.schema.registries.SchemaLoader;
        > > import
        > > org.apache.directory.api.ldap.schema.extractor.SchemaLdifExtractor;
        > > import
        > > org.apache.directory.api.ldap.schema.extractor.impl.DefaultSchemaLdi
        > > fE
        > > xtractor; import
        > > org.apache.directory.api.ldap.schema.loader.LdifSchemaLoader;
        > > import
        > > org.apache.directory.api.ldap.schema.manager.impl.DefaultSchemaManag
        > > er
        > > ;
        > >
        > > import org.apache.directory.api.util.exception.Exceptions;
        > > import org.apache.directory.server.constants.ServerDNConstants;
        > > import org.apache.directory.server.core.DefaultDirectoryService;
        > > import org.apache.directory.server.core.api.CacheService;
        > > import org.apache.directory.server.core.api.DirectoryService;
        > > import org.apache.directory.server.core.api.DnFactory;
        > > import org.apache.directory.server.core.api.InstanceLayout;
        > > import org.apache.directory.server.core.api.schema.SchemaPartition;
        > > import
        > > org.apache.directory.server.core.partition.impl.btree.jdbm.JdbmParti
        > > ti
        > > on; import
        > > org.apache.directory.server.core.partition.ldif.LdifPartition;
        > > import org.apache.directory.server.core.shared.DefaultDnFactory;
        > > import org.apache.directory.server.i18n.I18n;
        > > import org.apache.directory.server.ldap.LdapServer;
        > > import
        > > org.apache.directory.server.protocol.shared.transport.TcpTransport;
        > > import org.apache.logging.log4j.LogManager;
        > > import org.apache.logging.log4j.Logger;
        > >
        > >
        > >
        > > public class EmbeddedADS  {
        > >
        > >
        > >
        > >     private static final Logger LOGGER =
        > LogManager.getLogger(EmbeddedADS.class);
        > >     /** The directory service */
        > >     private DirectoryService service;
        > >
        > >     /** The LDAP server */
        > >     private LdapServer server;
        > >
        > >     private static EmbeddedADS instance;
        > >
        > >
        > >
        > >     public static EmbeddedADS getInstance(){
        > >         if(instance == null){
        > >             instance= new EmbeddedADS();
        > >         }
        > >         return instance;
        > >     }
        > >
        > >     /**
        > >      * initialize the schema manager and add the schema partition to
        > diectory
        > >      * service
        > >      *
        > >      * @throws Exception
        > >      *             if the schema LDIF files are not found on the
        > classpath
        > >      */
        > >     private void initSchemaPartition() throws Exception {
        > >         final InstanceLayout instanceLayout =
        > > this.service.getInstanceLayout();
        > >
        > >         final File schemaPartitionDirectory = new File(
        > >                 instanceLayout.getPartitionsDirectory(), "schema");
        > >
        > >         // Extract the schema on disk (a brand new one) and load the
        > registries
        > >         if (schemaPartitionDirectory.exists()) {
        > >             LOGGER.debug("schema partition already exists, skipping
        > schema extraction");
        > >         } else {
        > >             final SchemaLdifExtractor extractor = new
        > DefaultSchemaLdifExtractor(
        > >                     instanceLayout.getPartitionsDirectory());
        > >             extractor.extractOrCopy();
        > >         }
        > >
        > >         final SchemaLoader loader = new LdifSchemaLoader(
        > >                 schemaPartitionDirectory);
        > >         final SchemaManager schemaManager = new
        > > DefaultSchemaManager(loader);
        > >
        > >         // final DnFactory dnFactory = new
        > >         // DefaultDnFactory(schemaManager,service.getDnFactory());
        > >
        > >         // We have to load the schema now, otherwise we won't be 
able
        > >         // to initialize the Partitions, as we won't be able to 
parse
        > >         // and normalize their suffix Dn
        > >         schemaManager.loadAllEnabled();
        > >
        > >         final List<Throwable> errors = schemaManager.getErrors();
        > >
        > >         if (errors.size() != 0) {
        > >             throw new Exception(I18n.err(I18n.ERR_317,
        > >                     Exceptions.printErrors(errors)));
        > >         }
        > >
        > >         this.service.setSchemaManager(schemaManager);
        > >
        > >         // Init the LdifPartition with schema
        > >        DnFactory dnFactory = new DefaultDnFactory(schemaManager,
        > this.service.getCacheService().getCache("dnCache"));
        > >        this.service.setDnFactory(dnFactory);
        > >         final LdifPartition schemaLdifPartition = new LdifPartition(
        > >                 schemaManager,  service.getDnFactory());
        > >
        > >
        > > schemaLdifPartition.setPartitionPath(schemaPartitionDirectory.toURI(
        > > ))
        > > ;
        > >
        > >         // The schema partition
        > >         final SchemaPartition schemaPartition = new SchemaPartition(
        > >                 schemaManager);
        > >         schemaPartition.setWrappedPartition(schemaLdifPartition);
        > >         this.service.setSchemaPartition(schemaPartition);
        > >     }
        > >
        > >     /**
        > >      * Initialize the server. It creates the partition, adds the
        > > index,
        > and
        > >      * injects the context entries for the created partitions.
        > >      *
        > >      * @param workDir
        > >      *            the directory to be used for storing the data
        > >      * @throws Exception
        > >      *             if there were some problems while initializing 
the
        > system
        > >      */
        > >     private void initDirectoryService(final File workDir) throws
        > Exception {
        > >         // Initialize the LDAP service
        > >         this.service = new DefaultDirectoryService();
        > >         this.service.setInstanceLayout(new InstanceLayout(workDir));
        > >
        > >         final CacheService cacheService = new CacheService();
        > >         cacheService.initialize(this.service.getInstanceLayout());
        > >
        > >         this.service.setCacheService(cacheService);
        > >
        > >         // first load the schema
        > >         this.initSchemaPartition();
        > >
        > >         // then the system partition
        > >         // this is a MANDATORY partition
        > >         // DO NOT add this via addPartition() method, trunk code
        > complains about
        > >         // duplicate partition
        > >         // while initializing
        > >         final JdbmPartition systemPartition = new JdbmPartition(
        > >                 this.service.getSchemaManager(), 
service.getDnFactory());
        > >         systemPartition.setId("system");
        > >         systemPartition.setPartitionPath(new File(this.service
        > >                 .getInstanceLayout().getPartitionsDirectory(),
        > systemPartition
        > >                 .getId()).toURI());
        > >         systemPartition.setSuffixDn(new
        > > Dn(ServerDNConstants.SYSTEM_DN));
        > >
        > > systemPartition.setSchemaManager(this.service.getSchemaManager());
        > >
        > >         // mandatory to call this method to set the system partition
        > >         // Note: this system partition might be removed from trunk
        > >         this.service.setSystemPartition(systemPartition);
        > >
        > >         // Disable the ChangeLog system
        > >         this.service.getChangeLog().setEnabled(false);
        > >         this.service.setDenormalizeOpAttrsEnabled(true);
        > >         this.service.setShutdownHookEnabled(true);
        > >
        > >         // And start the service
        > >         this.service.startup();
        > >
        > >         // We are all done !
        > >     }
        > >
        > >     public EmbeddedADS()  {
        > >
        > >     }
        > >
        > >     /**
        > >      * Creates a new instance of EmbeddedADS. It initializes the
        > directory
        > >      * service.
        > >      *
        > >      * @throws Exception
        > >      *             If something went wrong
        > >      */
        > >     public void init(final File workDir) throws Exception {
        > >         if (!workDir.exists()) {
        > >             workDir.mkdirs();
        > >             this.initDirectoryService(workDir);
        > >             this.service.shutdown();
        > >         }
        > >
        > >         this.initDirectoryService(workDir);
        > >     }
        > >
        > >     /**
        > >      * starts the LdapServer
        > >      *
        > >      * @throws Exception
        > >      */
        > >     public void startServer(File workDir, int serverPort) throws
        > Exception {
        > >         init(workDir);
        > >         this.server = new LdapServer();
        > >         TcpTransport transports = new TcpTransport(serverPort);
        > >         transports.setEnableSSL(true);
        > >         this.server.setTransports(transports);
        > >         this.server.setDirectoryService(this.service);
        > >
        > >
        > >         this.server.start();
        > >
        > >
        > >         LOGGER.debug("The server is running.");
        > >     }
        > >
        > >     public void shutdownServer() throws Exception {
        > >
        > >
        > >         if(this.server != null){
        > >             try {
        > >                 this.server.stop();
        > >                 LOGGER.debug("LDAP Server stop done");
        > >             } catch (Exception e) {
        > >               LOGGER.error("exception in stop server",e);
        > >             }
        > >         }
        > >
        > >
        > >         if(this.service != null){
        > >             try {
        > >                 this.service.shutdown();
        > >                 LOGGER.debug("Dir Service shutdwon done");
        > >             } catch (Exception e) {
        > >                 LOGGER.error("exception in shutdown dir service",e);
        > >             }
        > >         }
        > >
        > >
        > >     }
        > > }
        > >
        > >
        > >
        > >
        > > The information in this electronic mail ("e-mail") message may
        > > contain
        > information that is confidential and/or privileged, or may otherwise
        > be protected by work product or other legal rules. It is solely for
        > the use of the individual(s) or the entity (ies) originally intended.
        > Access to this electronic mail message by anyone else is unauthorized.
        > If you are not the intended recipient, be advised that any
        > unauthorized review, disclosure, copying, distribution or use of this
        > information, or any action taken or omitted to be taken in reliance 
on it, is prohibited and may be unlawful.
        > Please notify the sender immediately if you have received this
        > electronic message by mistake, and destroy all copies of the original 
message.
        > >
        > > The sender believes that this e-mail and any attachments were free
        > > of
        > any virus, worm, Trojan horse, malicious code and/or other
        > contaminants when sent. E-mail transmissions cannot be guaranteed to
        > be secure or error-free, so this message and its attachments could
        > have been infected, corrupted or made incomplete during transmission.
        > By reading the message and opening any attachments, the recipient
        > accepts full responsibility for any viruses or other defects that may
        > arise, and for taking remedial action relating to such viruses and
        > other defects. Neither Wyndham Worldwide Corporation nor any of its
        > affiliated entities is liable for any loss or damage arising in any
        > way from, or for errors or omissions in the contents of, this message 
or its attachments.
        >
        >
        > The information in this electronic mail ("e-mail") message may contain
        > information that is confidential and/or privileged, or may otherwise
        > be protected by work product or other legal rules. It is solely for
        > the use of the individual(s) or the entity (ies) originally intended.
        > Access to this electronic mail message by anyone else is unauthorized.
        > If you are not the intended recipient, be advised that any
        > unauthorized review, disclosure, copying, distribution or use of this
        > information, or any action taken or omitted to be taken in reliance 
on it, is prohibited and may be unlawful.
        > Please notify the sender immediately if you have received this
        > electronic message by mistake, and destroy all copies of the original 
message.
        >
        > The sender believes that this e-mail and any attachments were free of
        > any virus, worm, Trojan horse, malicious code and/or other
        > contaminants when sent. E-mail transmissions cannot be guaranteed to
        > be secure or error-free, so this message and its attachments could
        > have been infected, corrupted or made incomplete during transmission.
        > By reading the message and opening any attachments, the recipient
        > accepts full responsibility for any viruses or other defects that may
        > arise, and for taking remedial action relating to such viruses and
        > other defects. Neither Wyndham Worldwide Corporation nor any of its
        > affiliated entities is liable for any loss or damage arising in any
        > way from, or for errors or omissions in the contents of, this message 
or its attachments.
        >
        
        
        
        --
        Kiran Ayyagari
        http://keydap.com
        
        The information in this electronic mail ("e-mail") message may contain 
information that is confidential and/or privileged, or may otherwise be 
protected by work product or other legal rules. It is solely for the use of the 
individual(s) or the entity (ies) originally intended. Access to this 
electronic mail message by anyone else is unauthorized. If you are not the 
intended recipient, be advised that any unauthorized review, disclosure, 
copying, distribution or use of this information, or any action taken or 
omitted to be taken in reliance on it, is prohibited and may be unlawful. 
Please notify the sender immediately if you have received this electronic 
message by mistake, and destroy all copies of the original message.
        
        The sender believes that this e-mail and any attachments were free of 
any virus, worm, Trojan horse, malicious code and/or other contaminants when 
sent. E-mail transmissions cannot be guaranteed to be secure or error-free, so 
this message and its attachments could have been infected, corrupted or made 
incomplete during transmission. By reading the message and opening any 
attachments, the recipient accepts full responsibility for any viruses or other 
defects that may arise, and for taking remedial action relating to such viruses 
and other defects. Neither Wyndham Worldwide Corporation nor any of its 
affiliated entities is liable for any loss or damage arising in any way from, 
or for errors or omissions in the contents of, this message or its attachments.




-- 

Kiran Ayyagari
http://keydap.com


The information in this electronic mail ("e-mail") message may contain 
information that is confidential and/or privileged, or may otherwise be 
protected by work product or other legal rules. It is solely for the use of the 
individual(s) or the entity (ies) originally intended. Access to this 
electronic mail message by anyone else is unauthorized. If you are not the 
intended recipient, be advised that any unauthorized review, disclosure, 
copying, distribution or use of this information, or any action taken or 
omitted to be taken in reliance on it, is prohibited and may be unlawful. 
Please notify the sender immediately if you have received this electronic 
message by mistake, and destroy all copies of the original message.

The sender believes that this e-mail and any attachments were free of any 
virus, worm, Trojan horse, malicious code and/or other contaminants when sent. 
E-mail transmissions cannot be guaranteed to be secure or error-free, so this 
message and its attachments could have been infected, corrupted or made 
incomplete during transmission. By reading the message and opening any 
attachments, the recipient accepts full responsibility for any viruses or other 
defects that may arise, and for taking remedial action relating to such viruses 
and other defects. Neither Wyndham Worldwide Corporation nor any of its 
affiliated entities is liable for any loss or damage arising in any way from, 
or for errors or omissions in the contents of, this message or its attachments.

Reply via email to