Here is an example, I did it with RC3 here are the steps (as far as I could recollect) - Download apacheds1.0-RC3 - create a custom schema file myschema.schema #================= begin myschema.schema ============================= # define myschemaOrgPerson -- extends InetOrgPerson # define myschemaOrganizationalUnit -- extends organizationalUnit #================================================================ # myschema 94555 # AttributeTypes 94555.2.1 # Object Classes 94555.2.2 # attributetype ( 94555.2.1.1 NAME 'dateCreated' DESC 'dateCreated' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) attributetype ( 94555.2.1.2 NAME 'dateModified' DESC 'dateModified' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) attributetype ( 94555.2.1.3 NAME 'dateCodeGenerated' DESC 'dateCodeGenerated' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) attributetype ( 94555.2.1.4 NAME 'dateActivated' DESC 'dateActivated' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) attributetype ( 94555.2.1.5 NAME 'codeFlag' DESC 'codeFlag' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) attributetype ( 94555.2.1.6 NAME 'activeFlag' DESC 'activeFlag' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) attributetype ( 94555.2.1.7 NAME 'employeeType' DESC 'employeeType' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) attributetype ( 94555.2.1.8 NAME 'companyURL' DESC 'companyURL' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) attributetype ( 94555.2.1.9 NAME 'selfRegAllowed' DESC 'selfRegAllowed' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) attributetype ( 94555.2.1.10 NAME 'protected' DESC 'protected' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) attributetype ( 94555.2.1.11 NAME 'serviceType' DESC 'serviceType' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) attributetype ( 94555.2.1.12 NAME 'domainKey' DESC 'domainKey' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) attributetype ( 94555.2.1.13 NAME 'autoActivationAllowed' DESC 'autoActivationAllowed' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) attributetype ( 94555.2.1.14 NAME 'companyName' DESC 'companyName' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) attributetype ( 94555.2.1.15 NAME 'city' DESC 'city' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) attributetype ( 94555.2.1.16 NAME 'state' DESC 'state' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) attributetype ( 94555.2.1.17 NAME 'countryname' DESC 'countryname' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) # myschemaOrgPerson # The inetOrgPerson represents people who are associated with an # organization in some way. It is a structural class and is derived # from the organizationalPerson which is defined in X.521 [X521]. objectclass ( 94555.2.2.1 NAME 'myschemaOrgPerson' DESC 'myschema Organizational Person' SUP inetOrgPerson STRUCTURAL MAY ( dateCreated $ dateCodeGenerated $ employeeType $ dateModified $ activeFlag $ codeFlag ) ) objectclass ( 94555.2.2.2 NAME 'myschemaOrganizationalUnit' DESC 'myschemaOrganizationalUnit' SUP organizationalUnit STRUCTURAL MAY ( dateCreated $ dateModified $ dateActivated $ dateCodeGenerated $ activeFlag $ codeFlag $ selfRegAllowed $ protected $ serviceType $ domainKey $ autoActivationAllowed $ companyName $ companyURL $ state $ city $ countryname ) ) #================= end myschema.schema ============================= - put this file in E:\Program Files\apacheds- 1.0-RC3\src\core\src\main\schema folder - install maven 2 - open command shell and cd to E:\Program Files\apacheds-1.0-RC3\src\core - run "mvn process-resources" to generate the myschema schema sources - generated source files will be found in E:\Program Files\apacheds- 1.0-RC3\src\core\target\generated-sources\org\apache\directory\server\core\schema\bootstrap - create a patch dir somewhere - copy the generated Myschema* files into patch dir - build the patch myschema.jar by placing apacheds libraries in classath... a simple javac inside ant will work - this myschema.jar has to be placed in E:\Program Files\apacheds- 1.0-RC3\lib\ext folder - configure the E:\Program Files\apacheds-1.0-RC3\conf\server.xml #=============== add this to server.xml ============================= myschema dc=myschema,dc=com dc ou objectClass krb5PrincipalName uid objectClass: top objectClass: domain objectClass: extensibleObject dc: myschema On 8/23/06, Craig L. Ching wrote: > > Great, thanks for the info! BTW, I'm going to be using an embedded > server, once this is built, will it include my new schema in the embeddable > server? > > As for the project, it's a commercial product called Q Pasa! We monitor > and manage middleware software (e.g. IBM WebSphere MQ, IBM WebSphere App > Server, and tons of other stuff). We are planning on using ApacheDS to do > our default authentication/authorization to begin with (replacing a legacy, > home-grown solution), but we're going to be adding in the capability to find > other installations of our software so that disparate installations can be > integrated (sort of hard to explain the latter use). I'm sure if this is > successful we'll find lots of other uses for it. I am evaluating ADS > because it is 100% pure java and it is embeddable, not to mention that it's > the Apache organization ;-) > > Again, thanks for the help, I'll let you all know how I progress. > > Cheers, > Craig > > ------------------------------ > *From:* Emmanuel Lecharny [mailto:elecharny@gmail.com] > *Sent:* Wednesday, August 23, 2006 10:24 AM > *To:* Apache Directory Developers List > *Subject:* Re: Adding an objectClass to ApacheDS > > Great ! > > Don't worry to much about the mailing list, we don't use > user@directory.apache.org atm. So this is the right place to post. > > Extending the schema is a little bit complicated in this version, but it > does not mean it's complicated. > > Here are the steps : > 1) create your schema using OpenLdap syntax (which is RFC syntax, btw) > 2) put it in apacheds/core/src/main/schema, beside the other schemas > 3) go into apacheds/core and modify the pom.xml file : > ... > > src/main/schema > > > apache > > system > > > > apachedns > > system > core > > > ... > here, you just add your schema, with its dependencies. > 4) now, go back to the root project and compile the project : > mvn install > (it will take around 3 minutes) > 5) build the binaries : > cd apacheds/server-installers > mvn install > > now, you can install the server with the installer that has been > generated. > > If you are lost, here is a link to a page which explains the build process > : > http://docs.safehaus.org/display/APACHEDS/Building > > I think there is something sompler, but I don't know it. Anybody on the > list ? > > However, if you have any pb, just push a mail. We will help you as fast as > we can. > > btw, which kind of project are you working on, if it's not secret ? > > Emmanuel lécharny > > On 8/23/06, Craig L. Ching < cching@mqsoftware.com> wrote: > > > > Hi! > > > > I realize this is the developer's list and that it's a bit early for > > ApacheDS, but I'm evaluating it for use in our products. I'm trying to > > figure out how to extend the schema (I need to add a new objectClass), > > can anyone point me in the right direction? I'm fine with reading some > > code to understand it. > > > > Cheers, > > Craig > > > > > > -- > Cordialement, > Emmanuel Lécharny >