Kiran Ayyagari wrote:
> can't say whats happening without looking at your initialization
> code however
> can you take a look at the initSchema() method in [1].
>
> Having said this I have faced an issue with JarLdifSchemaLoader
> when used in a servlet container, but
> when used LdifSchemaLoader the problem was solved.
The problem actually arises before the schema loader is called:
SchemaLdifExtractor extractor = new DefaultSchemaLdifExtractor( new File(
workingDirectory ) );
extractor.extractOrCopy();
This will search for schema files in the class path, assuming that the
environment variable "java.class.path" contains all the libraries/jars
available to the current class loader. However, in Tomcat (at least Tomcat 6,
that is), that environment variable contains only one single entry, Tomcat's
own bootstrap.jar. As a result, the LDIF extractor finds no matches and copies
no files, the working directory is empty and the schema loader complains that
it can't find schema.ldif.
> Would be great if you provide more info about the environment and
> if possible the way you are
> initializing the server.
Tomcat 6.0.26, Sun JDK 1.6.0_16, Windows Vista.
ApacheDS initialisation goes like this:
DirectoryServiceFactory factory =
DefaultDirectoryServiceFactory.DEFAULT;
factory.init("default");
directoryService = factory.getDirectoryService();
directoryService.setWorkingDirectory(workingDir);
initializeRepository(); // this sets up my partition and data
Transport transport = new TcpTransport(port);
ldapService = new LdapServer();
ldapService.setTransports(transport);
ldapService.setDirectoryService(directoryService);
ldapService.setAllowAnonymousAccess(false);
ldapService.start();
(This used to be based on the 1.5.5 example code for creating a servlet
wrapper, but I had to blindly rewrite most of it when I upgrade to 1.5.6)
However, unless I can somehow prevent DefaultSchemaLdifExtractor from getting
called (and yet provide all the data it would normally handle), I don't think
my initialisation code has much impact on the real problem.
Cheers,
Marian.